前几天写了一篇《新手也能学会,35行代码爬一部小说》,在评论区有网友问:起点的可以爬吗?我的回答是:理论上是可以的。今天就来试试!
因为我没有起点账号,我就以免费章节为例。
一、分析网页,为爬取小说做好前期工作。
(一)选择一本小说,这里随便找个小说。
(二)进入小说的目录,使用开发者模式(按F12)
1、点击左上方的小箭头(看下图)
2、把鼠标移动到〈第一章〉标题处点击一下(如下图)
3、同理,你再点击下〈第二章〉,你就会发现本面所有的章节都有了。(如下图)
我们下面的任务就是把所有的链接提取出来。
二、提取章节的链接,为爬取正文做准备。
(一)查看目录的源代码(右键--->查看源代码)
密密麻麻的,是不是头大了?不要急我有妙招(开个玩笑,其实这是常识)
(二)按Ctrl F打开查找框(箭头1处),输入第一章的标题“医门传承”。是不是有了?(箭头2处)
(三)查看浏览器是如何获取网页数据的。
1、点击Network选项卡,刷新一下网页。
内容非常的多,没有头绪啊!
不要急,看下边。
2、如何进行查找我们需要的数据。
逐个点击箭头1处,慢慢的找,这是个烦人的地方。(简单的方法目前我还没有找到)
通过查找我们Doc标签处(箭头1处)找到了我们需要的内容(箭头4处)。
3、找出浏览器获取网页数据的方式。
选中Headers选项卡(箭头1处)具体的含义如下:箭头2处表示浏览器提交的网址;箭头3处表示提交方式是get;箭头3处表示提交的具体信息。我们要把这3处的内容记下来,后面要用到。
(四)开如提取链接
这里我们用到python的requests模块。代码如下:
爬取的内容如下:
很明显,失败了!说明这个页面是动态加载的,涉及到一些参数,以我目前的能力还不能解决问题。我们换一个简单的方法--------使用python的selenium、webdriver模块。
首先,导入模块,把网址复制下来,试试。
代码如下:
可以看到我们成功的取到了章节具体内容。
第二,保存内容到硬盘了。代码如下:
第三,批量下载章节内容。
可以定义一个函数,把[“第1章”,“第2章”.......]作为参数传递进去。实现程序的自动爬取。
在这里我们要先回到目录窗口,同时关闭当前章节内容窗口,为爬取下一章做准备。
完整代码如下:
写在后面:
1、请大家支持正版,这里只是爬取了免费章节。
2、程序还有许多优化的地方:
一是耗时很长。解决方法有采用多进程
二是可以加个判断语句,过滤一下弹窗
三是通过优化不必每下载一章都重新打开浏览器的问题
3、起点还是有很多反爬措施,以我目前的水平还不能解决,但是我相信大牛一定有办法。
4、不足之处请大家多指正,我们一起进步。
5、谢谢大家,耐心的看完本文!
Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved