zoukankan      html  css  js  c++  java
  • xpath爬虫实战-爬取小说斗罗大陆第四部

    爬取思路

    爬取的一些问题

    1.编码问题这两个编码无法转换成utf-8

    • UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘xa0’ in position 15: illegal multibyte sequence
      在这里插入图片描述
    • UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘xufeff’ in position 15: illegal multibyte sequence
    • 解决:将这两个提前换成空字符
      在这里插入图片描述
      2.要提前建好一个txts的文件夹

    全部源码

    from lxml import etree
    import requests
    from fake_useragent import UserAgent
    
    
    url1 = 'https://www.ibiquge.net/66_66791/'
    url2 = 'https://www.ibiquge.net'
    
    
    # 爬取HTML的函数
    def get_html(url):
        ua = UserAgent()
        kv = {'user-agent': ua.random}
        re = requests.get(url, headers=kv)
        re.encoding = 'utf-8'
        htm1 = re.text
        return htm1
    
    
    # 根据url获得文章并保存的函数
    def get_text(url):
        html = get_html(url)
        selector = etree.HTML(html)
        title = selector.xpath('//*[@id="main"]/div/div/div[2]/h1/text()')
        txt = selector.xpath('//*[@id="content"]/text()')
        print(title)
        fp = open('txts\' + title[0] + '.txt', 'w')
        for each in txt:
            each1 = each.replace('ufeff', '')
            fp.write(each1.replace('xa0', ''))
        fp.close()
    
    
    def get_url(html):
        selector = etree.HTML(html)
        url_list = selector.xpath('//*[@id="list"]/dl/dd/a/@href')
        for url in url_list:
            new_url = url2 + url
            get_text(new_url)
    
    
    if __name__ == '__main__':
        html = get_html(url1)
        get_url(html)
    

    爬取过程
    在这里插入图片描述
    爬取结果
    在这里插入图片描述

    如有侵权,联系删除

  • 相关阅读:
    wait 和 notify 方法
    synchronized关键字
    多线程之thread、runnable的区别
    CodeForces 213 E
    hdu 3038 并查集
    zoj 3349 dp + 线段树优化
    hdu 4419 线段树 扫描线 离散化 矩形面积
    hdu 4262(线段树)
    hfut 1287
    hdu 4747 (线段树)
  • 原文地址:https://www.cnblogs.com/l0nmar/p/12553854.html
Copyright © 2011-2022 走看看