zoukankan      html  css  js  c++  java
  • 爬起点完本小说列表


    没来做翻页,只爬第一页

    import logging
    import requests
    import bs4
    import json
    import psycopg2
    from io import StringIO

    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s- %(message)s')

    blist = []

    def main():
    url = 'https://www.qidian.com/finish/'
    html = request_douban(url)
    soup = bs4.BeautifulSoup(html,'lxml')
    save_to_txt(soup)

    def request_douban(url):
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
    'Chrome/88.0.4324.146 Safari/537.36',
    }
    try:
    response = requests.get(url,headers=headers)
    if response.status_code == 200:
    return response.text
    except requests.RequestException:
    return None

    def save_to_txt(soup):
    booklist = soup.find(class_="main-content-wrap fl").find_all("li")
    logging.info(booklist)
    for i in booklist:
    logging.info(i.find('h4'))
    try:
    shuming = i.find('h4').string
    zuozhe = i.find(class_="name").string
    leixing = i.find(class_="go-sub-type").string
    zhuangtai = i.find(class_="author").find('span').string
    dizhi = 'https:' + i.find('h4').find( 'a', href=True)['href']

    tap = (shuming, zuozhe, leixing, zhuangtai, dizhi)
    blist.append(' '.join('%s' % idd for idd in tap))
    logging.info(list)
    writedatabase(list)
    except:
    return None


    def writedatabase(blist):
    with open("config/kafka_and_postgres_config.json") as json_file:
    config = json.load(json_file)
    Conf = json.loads(json.dumps(config))
    pghost = Conf['postgres_host']
    pguser = Conf['postgres_user']
    pgpassword = Conf['postgres_password']
    pgdatabase = Conf['postgres_database']
    pgtable = Conf['postgres_table']

    s = ""
    for action in blist:
    s += action + ' '
    logging.info(s)

    conn = psycopg2.connect(host=pghost, user=pguser, password=pgpassword, database=pgdatabase)
    cur = conn.cursor()
    cur.copy_from(StringIO(s), pgtable, columns=('shuming', 'zuozhe', 'leixing', 'zhuangtai', 'dizhi'))
    conn.commit()
    cur.close()
    conn.close()
    list = []
    print('完成')


    if __name__=="__main__":
    main()
     
  • 相关阅读:
    python 利用爬虫获取页面上下拉框里的所有国家
    python3 requests 进行接口测试、爬虫使用总结
    Tomcat设置最佳线程数总结
    Java中实现对象的比较:Comparable接口和Comparator接口
    堆排序算法
    快速排序算法2---以第一个元素作为主元
    字符串匹配---暴力匹配算法
    快速排序算法
    Spring中@Autowired注解与自动装配
    Spring的注解
  • 原文地址:https://www.cnblogs.com/fanpiao/p/15247809.html
Copyright © 2011-2022 走看看