美文网首页
Python爬虫实战——爬取《斗破苍穹》全文小说(基于re模块)

Python爬虫实战——爬取《斗破苍穹》全文小说(基于re模块)

作者: libdream | 来源:发表于2018-12-26 10:19 被阅读0次

    目标

    爬取《斗破苍穹》全文小说,网址:http://www.doupoxs.com/doupocangqiong/

    思路

    手动浏览前几章节,观察url网址变化,以下为前4章节网址:

    http://www.doupoxs.com/doupocangqiong/2.html

    http://www.doupoxs.com/doupocangqiong/5.html

    http://www.doupoxs.com/doupocangqiong/6.html

    http://www.doupoxs.com/doupocangqiong/7.html

    可以看到,第1和第2章节没有明显规律,第2章节以后规律明显,通过数字递加来分页。手动输入http://www.doupoxs.com/doupocangqiong/3.html,会发现是404错误页面。

    所以,具体的思路为:从第1章开始构造URL,中间有404错误就跳过不爬取。

    具体代码如下:

    import requests
    import time, re
    
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 \
    (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    
    f = open('doupo.txt', 'a+')        #新建txt文档,以追加方式写入
    def getInfo(url):
        r = requests.get(url, headers=headers)
        if r.status_code == 200:            #判断请求码是否为200
            contents = re.findall("<p>(.*?)</p>", r.content.decode('UTF-8'), re.S)        #正则获取所有<p>标签内容,注意需要解码,不然会出错。
            for content in contents:
                f.write(content + '\n')        
        else:
            pass
    
    if __name__ == '__main__':
        urls = ["http://www.doupoxs.com/doupocangqiong/{}.html"\
                .format(str(i)) for i in range(2, 1665)]
        for url in urls:
            print('正在爬取'+url)
            getInfo(url)
            time.sleep(2)
    
        f.close()
    
    
    
    image

    相关文章

      网友评论

          本文标题:Python爬虫实战——爬取《斗破苍穹》全文小说(基于re模块)

          本文链接:https://www.haomeiwen.com/subject/wngclqtx.html