1. 填写采集规则的基本信息
首先点击采集管理中的添加按钮来新建规则:
然后进入到信息页面填写,包括:
规则名称:一般以要采集的源站名命名。
网站编码:默认自动检测即可。
类型:根据网站类型来选择,一般选小说
网址补全:默认选是即可
倒叙采集:一般否即可
图片本地化:一般选否,如果原网站做了反爬虫机制,就要选是;另外根据自己服务器硬盘大小选择,不要因为图片占用太多内存。
重复数据处理:一般选择不处理,这样碰到重复小说时,你采集就会告诉你已存在,不会重复采集。但这个要看是否多次采集,如果一个站点之前有使用其它采集规则有了数据,那么再使用新的采集规则很有可能会采集到与之前重复的数据,所以这时候需要判断是否把重复的数据替换成当前采集规则采集的数据。
重复数据处理:若选择不处理,采集同本小说时则告知已存在
重复数据处理:若选择处理,采集同本小说时则告知替换成功
2. 填写列表网址
首先用浏览器访问要采集的网页,然后网页对应的网址就是采集网址,page后面对应的参数用通配符【内容】替换,总页数只需要点击网页中的last按钮就知道多少页。图片中的网址总页数是19.
根据上述网址信息来编辑列表网址信息:
3. 填写列表网址(小说列表网址)
接下来我们要获取所有小说名称及其对应的网址连接,首先我们把鼠标放到某个小说上,然后点击鼠标右键,点击检查:
这样就得到了网页源代码,然后我们把鼠标放到箭头位置,就可以看到左边蓝色部分框住的就是对应小说的网页位置。
但我们想要找到框住所有小说的源代码,很简单,用鼠标继续放到更大的div范围。可以看到,图片中的箭头位置就是框住所有小说的div。显然它是唯一的,所以需要填写的获取区间为:
<div class="list list-truyen col-xs-12">[内容]</div></div></div></div>
然后对应的小说链接只要找到框住href的位置即可,显然h3包住的部分是唯一的,所以需要填写的网址规则为:
<h3 class="truyen-title"><a href="[内容1]" title="(*)">(*)</a></h3>
注意了,这里为什么用h3而不直接用a href;其实展开了可以看到,后面还有一个链接是对应最新章节的,导致a href并不是唯一的,所以必须用h3来保证唯一性。
最终的列表规则完整填写如下:
4. 填写关联网址(章节列表网址)
单击某一本小说后进入到小说详情页面
进入到小说详情页后可以看到所有章节列表:
那我们和获取到所有章节名称和对应链接呢?其实和前面获取小说名称和链接完全类似,首先鼠标移到某一章上鼠标右键,然后点击检查获取网页源代码:
同样我们先要找到框住所有章节的源代码,用鼠标继续放到更大的div范围。可以看到,图片中的箭头位置就是框住所有章节的div。显然它是唯一的,所以需要填写的获取区间为:
<div class="row"><div class="col-xs-12 col-sm-6 col-md-6">[内容]</ul></div></div>
然后对应的章节链接只要找到框住href的位置即可,这里可以看到,每个章节只有一个对应的href链接,所以href是唯一的,只需要填写href这段内容即可,所以网址规则为:
<a href="[内容1]" title="[章节标题]">(*)</span></a>
最终的关联网址规则完整填写如下:
4. 填写内容规则
栏目规则:
我直接用的固定规则,因为狂雨采集时不支持同时并入多个分类。
假如你用对应分类会报匹配错误,原因很简单:内容是读取出来的整个大字符串,并没有按照预想的去根据逗号拆分多分类(规则不支持)。
名称规则:<h3 class="title">[内容1]</h3>
作者规则:<div><h3>Author:</h3>[内容1]</div>
连载规则:<div><h3>Status:</h3><a href="(*)">[内容1]</a></div>
图片规则:<meta name="image" content="[内容1]">
介绍规则:<div class="desc-text"><p>[内容1]</p></div>
标签规则:<div><h3>Genre:</h3>[内容1]</div>
章节名称规则:<span class="chapter-text">[内容1]<span>
注意:这里的目标页换成章节列表,即去某一章节页面获取
点击测试规则后可以看到获取到了章节名称
这里注意一点,如果直接复制原始源代码标签,这里应该是:<span class="chapter-text">[内容1]<span></span></span>,但是你测试规则会发现查不到结果。
所以我们在做规则匹配的时候一定要保证唯一性的前提下尽量简洁,去掉不必要的标签。
章节内容规则:<div id="chapter-content" class="(*)" style="(*)">[内容1]<div align(*)>