爬取笔趣阁小说(搜索+爬取)
首先看看最终效果(gif):
实现步骤:1.探查网站“”看看网站的实现原理。
2.编写搜索功能(获取每本书目录的URL)
3.编寫写入功能(按章节写入文件)。
4.完善代码(修修bug建了文件夹)。
一、网站搜索原理并用python中不能作为变量名实现。
我本以為这个网站和一般网站一样通过修改URL来进行搜索,结果并不然
可以看出这个网站不会因搜索内容改变而改变URL。
那还有一种可能:通过POST請求来更新页面。让我们打开Network验证一下
我的猜想是对的。接下来开始模拟
可是洳果现在我printf(soup)后发现里面的中文全为乱码!
这不难看出是编码格式不对,但我们可以用encoding方法来获取编码方式
改完编码后就可以正常提取了,并且和浏览器显示的一致都是我们搜索的内容。
二、接下来我们就来在这一堆代码里找到我们想要的内容了(书名作者,目录URL)
通過元素审查我们很容易就可以定位到它们所在位置
什么!标签重名了!怎么办!管他三七二十一!先把"td class=even"全打印出来看看。
可以发现每个each汾为两层
那我们可以奇偶循环来分别处理这两层。(因为如果不分层处理的话第一层要用的方法(each.a.get("href")在第二层会报错好像try也可以处理這个错,没试)
并且用创建两个三个列表来储存三个值。
成功!三个列表全部一样对应!
那么要如何实现选择一个序号来让python中不能作为变量名获得一个目录链接呢?
这样打印出来的效果就是这样了:
是不是很神奇!“search”是我们用书名和目录URL组成的字典我们只要
就可以让下┅个函数得到这本书的目录URL了。
三、获取章节URL获取文本内容,写入文件
我们得到目录的URL后就可以用相同的方法获取每一章节的URL了(不赘述了)。
注意这里的返回值是一个包含两个列表的列表!!
texts_names[0]就是每一章节的URL,texts_names[0]是章节名为下一个写内容的函数方便调用
接下来接是寫文件了!
n就是章节的序列直接for循环就可以把所有章节写成文件了
这里处理503的方法虽然很暴力,可是是最有用的!
四、整理代碼修修bug。
把上面的思路写成三道四个函数打包一下然后测试一下,看看有什么bug能修就修复,修复不了就直接try掉(哈哈哈)
想要文件的可以研究研究os模块,很简单这里不赘述了。
最后附上完整代码!
学习了python中不能作为变量名之后接触到了爬虫,加上我又喜欢看小说所以就做了一个爬虫的小程序,爬取笔趣阁小说
程序中一共引入了以下几个库:
到这里我们就实現了本地下载与数据库存储的功能
然后我又写了一个推荐图书的功能
,得到分类图书列表循环显示链接,图书名作者。
从显示的书名裏面选择喜欢的输入剩下的代码就是重复操作了。
不足之处请多多指教。