如何用Python爬取小说?

495 阅读2分钟

大家好,我是小五🧐

这是Python改变生活系列的第5篇,主要跟大家介绍一下,我是如何用Python爬取小说?

记得两年前刚学Python时自己练习写过笔趣阁的爬虫,这就翻出来用用。

爬取小说

原来代码是找到了,但是很尴尬,我爬取的那个网站404了。

不过目前笔趣阁遍地都是,也分不清到底谁是“正版”的?

还有个比较好的消息,很多家连网页模板都是一模一样,你的爬虫改改地址就能接着用了,这是妙啊。

于是乎,我又随便找了一家“笔趣阁”。

今天我们就以我吃西红柿近期完结的沧元图为例,可以看到在这个笔趣阁网站里,小说沧元图的网址url是

https://*********/html/2292/

同时,《沧元图》所有的章节也都罗列在本页面。

我觉得先爬取所有的章节名和对应的url网址,分别保存到列表中。然后再使用requests爬取,并依次写入txt文档中。

网页结构并不复杂,也没有反爬措施。大概20行代码即可下载

for i, j in zip(urls, names):
    res_text = requests.get(url, headers=header).text
    zj_html = etree.HTML(res_text)
    texts = zj_html.xpath('//*[@id="content"]/text()')
    texts2 = zj_html.xpath('//*[@id="content"]/*/text()')
    text = '\n'.join(texts).strip()+'\n'.join(texts2).strip()

    with open('novels_n.txt', 'a', encoding='utf8') as f:
        f.write(f'{j} \n {text} \n')
        print(f'{novels_n}/{j},正在下载...')

这样我们就爬取了小说《沧元图》,并将它保存成txt文档。

通过\n使得章节名都与正文分割开。

非常完美!

老铁们,如果想看更多Python改变生活的真实问题案例,来给本文右下角点个赞吧👍

如果你也有一直想去解决的重复性问题,欢迎在评论区告诉我🚀大家一起探讨一下。