现在很多小说都是收费或者在线看的,对于我们地铁族特别不方便,所以写个爬虫生成一个小说的txt文本,这样就简单方便多了。
话不多说,开始教程。先看看我们要准备的有哪些工具:
1、Python3.6,我使用的是3.6版本
2、requests,强大好用的第三方库,使用pip install requests安装。官方中文教程地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
3、BeautifulSoup,另一个强大的库,使用pip install BeautifulSoup安装。官方中文教程地址:http://beautifulsoup.readthedocs.io/zh_CN/latest/
现在,我们就要利用这些工具,开始我们的实战。
首先,我们要选择一个爬取的对象,我选择了笔趣阁(http://www.biqugew.com/),它可以免费在线看,但不提供下载。我们先用requests看看能从网站上得到些什么?
代码很简单,一看就能懂,我先看看小说的一个章节页面有什么花样,用requests.get(url)的方法得到了网站返回给我的信息,我再把信息打印出来,看看是些什么?
是一些网站的信息,小说的内容、连接的地址和。。。咦那一连串乱七八糟的是啥?这里也不卖关子了,我们使用req.encoding返回得到req原来是ISO-8859-1编码格式,不能识别中文,这里手动修改一下编码req.enconding = 'gbk',再看看效果。
哈,能看到小说正文了。
但,我只需要小说的那部分,并不需要其他乱七八糟的东西,这个时候就要用到BeautifulSoup(之后简称bs)了。我看到正文的内容都有一个标签<div id="content">,那么我使用bs看看 ,能不能把所有的id="content"的内容都找出来,贴代码。
看看效果:
非常优秀!但是这只是小说里的其中一个章节,我不可能手动去下载每个章节,我们退回到上一层,看看小说的目录有什么猫腻。
这里能看到有个标签<div id='"list">,里面有所有的章节和对应的地址,我们同样用BeautifulSoup把这些内容都找到。
现在,我们有了所有的章节目录和地址,那么写一个循环再将内容存储在本地的txt中,一个免费离线小说就生成了。
写在最后:本人第一次写教程,手感的确生疏,可能思考方式也会片面,有任何错误或者可以改良的地方,欢迎指出。附上代码地址:https://github.com/Jason0306/pc/blob/master/bg_1.py