python老师让我们去爬去小说
在网上找了很久的代码
然而并没有什么卵用
因为太多而且不适合每个网站
还用到了正则表达式
对于这样不通用的代码是不能接受的
代码实现的适用条件
要求小说的章节url后面的数字是连续的
或者是有一定规律的
第一章url
image
第二章url
image
像这样有规律的
使用此代码
当然有的网站是毫无规律的
这时可以去多尝试几个网站
只要能找到规律了
就可以了
image
代码实现的步骤
修改四个地方即可
在此之前也请将需要的库下载
import requests
from lxml import etree
下载库
pip install requests
pip install lxml
image
步骤一:修改url
可以看到这个代码实现的功能就是用一个循环去遍历各个章节的url
image
image
前一大半部分的url都是一样的
只是在****.html是不一样的
所以用一个{}代替
而这个的值用format(i) in range(xxx,xxx)去循环遍历
注意:如果后缀是htm,是要将这个html改为htm的
range中的第一个参数就是第一章的那个数字
如果你想下载10章,那么在这个基础上+10
(前提是这个是连续的,如果是每+5是下一个章节,那么这里也是要变化的)
步骤2
下载将文件保存在那个位置
这个自行处理就好
由于我用的是linux
所有设置路径的方式可能不太一样
步骤3
添加标题的xpath
我们来到这个小说的第一个章节
image
以google浏览器为例子
反键点击检查
再点击如图左上角的那个箭头
image
再去定位标题
选中后 如图所示
再反键定位好位置后
在右边的代码中可以看到阴影的部分
反键copy,选中xpath
粘贴到步骤3那里
title = selector.xpath('*****/text()')
将xpath的内容给*****即可
image
然后就是主要内容了
同样的步骤
先点击左上角的箭头
再去定位内容后
反键找到对应的代码
再反键copy xpath
text = selector.xpath('*****/text()')
#将xpath的内容给*****即可
然后就可以静静的等待整部小说下载好咯
可能会有点慢
建议每100章下载一次
也许中间会出现问题
因为无法确定他在哪一章会出现不是连续的情况
所以要灵活的使用该代码
再去修改相应range中的内容即可
image
我的微信公众号:跨时代的jay
关注我哦,定时推送知识