如何通过提供一个小说名称使用python中不能作为变量名的requests库在笔趣阁中进行搜索

 爬取笔趣阁小说(搜索+爬取)

首先看看最终效果(gif):

实现步骤:1.探查网站“”看看网站的实现原理。

     2.编写搜索功能(获取每本书目录的URL)

     3.编寫写入功能(按章节写入文件)。

     4.完善代码(修修bug建了文件夹)。

一、网站搜索原理并用python中不能作为变量名实现。

我本以為这个网站和一般网站一样通过修改URL来进行搜索,结果并不然

 可以看出这个网站不会因搜索内容改变而改变URL。

 那还有一种可能:通过POST請求来更新页面。让我们打开Network验证一下

我的猜想是对的。接下来开始模拟

x = str(input("输入书名或作者名:")) # 通过变量来控制我们要搜索的内容

可是洳果现在我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]是章节名为下一个写内容的函数方便调用
接下来接是寫文件了!
"亲,点击进去,给个好评呗,分数越高更新越快,据说给新笔趣阁打满分的最后都找到了漂亮的老婆哦!手机站全新改版升级地址:http://m.xbiquge.la,数據和书签与电脑站同步无广告清新阅读!", "\n") 21 # 使用text属性,提取文本内容滤除br标签,随后使用replace方法去掉八个空格符号,并用回车代替 再去除每一页都有得结尾
 n就是章节的序列直接for循环就可以把所有章节写成文件了
这里处理503的方法虽然很暴力,可是是最有用的!
四、整理代碼修修bug。
把上面的思路写成三道四个函数打包一下然后测试一下,看看有什么bug能修就修复,修复不了就直接try掉(哈哈哈)
想要文件的可以研究研究os模块,很简单这里不赘述了。
最后附上完整代码!
他如果503的话读取内容就什么都木有,那直接让他再读一次直到讀出来为止。 103 content=content.replace("亲,点击进去,给个好评呗,分数越高更新越快,据说给新笔趣阁打满分的最后都找到了漂亮的老婆哦!手机站全新改版升级地址:http://m.xbiquge.la數据和书签与电脑站同步,无广告清新阅读!","\n") 104 # 使用text属性提取文本内容,滤除br标签随后使用replace方法,去掉八个空格符号并用回车代替 再詓除每一页都有得结尾

学习了python中不能作为变量名之后接触到了爬虫,加上我又喜欢看小说所以就做了一个爬虫的小程序,爬取笔趣阁小说

程序中一共引入了以下几个库:

到这里我们就实現了本地下载与数据库存储的功能

然后我又写了一个推荐图书的功能

,得到分类图书列表循环显示链接,图书名作者。

从显示的书名裏面选择喜欢的输入剩下的代码就是重复操作了。

不足之处请多多指教。

我要回帖

更多关于 python中不能作为变量名 的文章

 

随机推荐