注:集搜客GooSeeker爬虫从V9.0.2版本开始,爬虫术语“主题”统一改为“任务”,在爬虫浏览器里先命名任务再创建规则,然后登录集搜客官网会员中心的“任务管理”里,就可以查看任务的采集执行情况、管理线索网址以及做调度设置了。 一、勾选DS打数机中重复内容 集搜客v5.4.0新版发布,DS打数机中增加重复内容判断,避免翻页抓取中最后一页重复抓取。下载新版本 在DS打数机的高级菜单栏中选择终点标志勾选重复内容,打数机在抓取中判断出现重复内容后会停止抓取。 高级→终点标志→重复内容 crontab.xml中也有这个参数,在stopMark之后 stopOnDupCont:true或者false。设置为true,则表示进行重复内容检查。重复内容检查过程要生效,必须在DS打数机菜单中设置,或者在crontab.xml中设置。
二、分析正常翻页和翻页死循环的dom区别 翻页标志的dom(class值/id值/节点名)到了最后一页通常会与之前的不同,如下图,正常翻页时是@class=pn-next,翻页标志变为灰色后是@class=pn-next disabled。 Tips:MS谋数台怎么切换网页? 不勾内容定位,点击网页或输入新网址进行跳转,然后选择文件菜单->刷新网页结构。例如:在这里,不勾内容定位,直接点击到最后一页,刷新网页结构,点击翻页标志就能看到其dom结构。
做了翻页线索后,点击查看,在爬虫规则里看到xpath路径 //*[@id='J_bottomPage']/span[position()=1]/a[.//text()='下一页' and position()=5],这是用span和a节点的次序来定位翻页标志,次序变化的话就会翻页失败,最根本的原因是没有区分class值的变化,这样就会导致死循环。
三、修改xpath 只要找出正常翻页和翻页死循环的dom区别,根据这种变化,有多种修改xpath的方式,请根据实际情况做修改,在这里针对本案例介绍以下方法: 1、手工修改线索规则的xpath:前面说了正常翻页与最后一页的翻页标志,其对应的属性值(id/class值)是不同的,利用这个差别来修改xpath,翻到最后一页就会由于属性值不同而终止。 本案例中:正常翻页时是@class=pn-next,翻页标志变为灰色后是@class=pn-next disabled。所以,在线索规则里把 a[.//text()=”下一页" and position()=5] 改为 a[.//text()="下一页" and @class='pn-next'] 或 a[.//text()="下一页" and not (@class ='pn-next disabled')],点击保存修改,如下图,最后点击爬数据测试一下是否修改成功。 注意:保存修改就是保存了规则,无需再点击存规则,否则,修改的程序会被自动生成的程序覆盖而失效。
2、调整翻页映射:本案例中,attributes中的@class节点也会发生变化,不勾文本记号,把@class节点做记号映射,同时,用翻页区对应的区块节点映射给线索1,可以避免生成包含position()的xpath,如下图,点击存规则和爬数据,测试是否摆脱死循环。 3、利用层级原理来实现翻页 如果翻页标志的dom里能找到@href网址,说明每一页是有独立网址的,可以不做翻页线索,利用层级抓取中的下级线索来翻页。更多操作细节看利用层级翻页,流程如下: 1)新建一个整理箱,单抓翻页标志的@href节点,并把它作为下级线索,整理箱顶点最好要做定位标志映射,提高定位的精确性和网页适应性 2)爬虫路线窗口中,目标主题名填当前主题,这样就会把下一页网址采下来作为自己的新线索,用DS采数据时,输入线索数就填一个比翻页总数大的数字,这样每抓完一页就会自动抓下一页,不用每次都点单搜/集搜输入线索数啦 注意:大多数网站的超链接网址显示的相对网址,即缺少网站域名部分,采下来的结果文件里看到的就是少了域名的网址,但是,作为下级线索的话,生成线索的过程中会自动补全网址 |