简单爬虫——抓取诛仙小说

最近腾讯在播放我最喜欢的玄幻小说之一《诛仙》的动漫,我也想重读一下诛仙,所以想把诛仙下载下来,现在微信读书平台很不错,不过上面的热门小说很多要收费,我就想着自己抓下来读一下。说干就干,我百度了一下,找到了一个网站可以在线阅读诛仙,好了,这个就是我的目标了。
https://www.93xscc.com/zhuxian/

诛仙

由于每一章都有一个单独的链接,所以我首先要获取每一章链接和标题,打开F12查看网页源代码,可以很清晰的看到源代码,
目录

OK,那下面我只要把这些链接抓下来存在一个列表中,循环遍历这个列表,去获取文章内容就可以了。
我们发现每章的链接和标题都是在

for link in link_list:
    url = 'https://www.93xscc.com'+link[0]
    content = requests.get(url).content.decode()
    text = re.search('码阅读.*?

(.*?)

', content, re.S).group(1) #print(text.replace("

","\n")) text = text.replace("

","\n") os.makedirs('诛仙', exist_ok=True) #如果没有“诛仙”文件夹,就创建一个,如果有,则什么都不做 with open(os.path.join('诛仙','诛仙.txt'),'a',encoding='utf-8') as f: f.write(link[1]+"\n"+text+"\n\n")

所以,我们可以构建一个正则表达式来获取正文的内容
码阅读.?

(.?)


这样获取的正文有个问题,文章中的段落都是通过HTML的

来分割的,所以需要把文章中的连续的

手动替换为换行符\n,然后把最后一章的

替换为空白字符串,以及尾声中的

也替换为空白字符串。这样,我就获取到每一章的正文。

正文

最后,我只需要把这些结果拼接起来就行了。我创建一个《诛仙》的word文档,并把每一章的内容添加到其中,这里我采用python操作word的第三方库python-docx包,把每一章的标题作为word的标题格式,设置为3号标题,小说名设置为0号标题。

import docx
import os

doc = docx.Document()
doc.add_heading('诛仙',0)
for link in link_list:
    url = 'https://www.93xscc.com'+link[0]
    content = requests.get(url).content.decode()
    text = re.search('码阅读.*?

(.*?)

', content, re.S).group(1) #print(text.replace("

","\n")) text = text.replace("

","\n") ## 将

替换为换行符 text = text.replace("

", "") ## 去除最后一个

text = text.replace("

", "") ## 去除尾声中的

os.makedirs('诛仙', exist_ok=True) doc.add_heading(link[1], 3) doc.add_paragraph(text) doc.save(os.path.join('诛仙','诛仙.docx'))

搞定,得到了离线的《诛仙》小说了。


image.png

你可能感兴趣的:(简单爬虫——抓取诛仙小说)