python讨论qq群:996113038
导语:
前几天爬取过“唐诗三百首”,发现阅读量不是很高,可能是因为这个爬虫太简单了,仅仅十多行代码就完成了。确实,这个爬虫很简单,只需要进行一次网页分析就可以了。
今天就带着大家完成一次高难度动作,需要进行三次网页分析的爬虫,爬取下面这个网站。
first_url1="https://www.kanunu8.com/book3/6014/index.html"
代码及相关资源获取:
关注“python趣味爱好者”微信公众号,回复“科幻小说”获取源代吗
开发工具:
python3.6.4
需要安装的模块:
requests
parsel
re
效果演示:
基本原理:
爬取这个网页与之前的“唐诗三百首”的不同就在于,爬取科幻小说需要分析三次网页。
这三个网页由里到外分别是:
1:爬取小说正文所在的网页:
https://www.kanunu8.com/book3/6014/105971.html
这个网页的最后105971.html是最重要的,章节就是按照这个区分的。
这个网页图片如下:
这个网页里面有正文,于是我们就需要把这个网页的正文全部提取出来,然后保存在txt文件里面。
我们把这个打包成一个函数:这个函数放在最后。大家可以仔细看一下。
2::一本小说的章节目录所在的网页
https://www.kanunu8.com/book3/6014/index.html
这个网页代表的是一个小说的章节目录,其中存储着很重要的信息,就是章节信息代表的数字。105971.html。
分析这个网页的目的是提取章节代表的数字(类似105971.html)。以及这个章节的标题名,比如“第一章 罗比”。
3:这个作者有很多部小说,我们要在这个网页分析每一个小说的网址的特征存储在哪里,然后提取出来。
也就是href和标题,图片如下:
部分代码:
下面是部分源代码:
def save1(url,title,title2):#存储一本书的每一章
response=requests.get(url,headers=headers)
response.encoding='gbk'
html_str=response.text
html = parsel.Selector(html_str)
content= html.xpath('//div[@ align="center"]').extract()
content=str(content)
data=re.findall('u3000(.*?)<br>',content)
content_txt=[]
print("================正在下载====================")
print(title2)
#f=open(title+'.txt','a')
f=open(title2+'.txt','a',encoding='utf-8')
f.write(title)
f.write("=====================================")
for i in data:
str1=i[6:]
f.write(str1)
f.write("\n")
f.close()
感谢大家观看,有钱的老板可以打赏一下小编哦!
扫描下方二维码,关注公众号
参考资料:
图片来源:https://images.pexels.com/photos/3844922/pexels-photo-3844922.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500