1. 场景描述
很早以前的版本就有了自动滚屏功能,GooSeeker V5.4.0新增的连续滚屏是用于很长很长的瀑布流网页抓取的。如果一个网页不是很长,滚几次就能到底,比如,京东和淘宝上的商品详情有很多图片,需要滚好几屏才能看到底,这类网页是不用连续滚屏的,打开自动滚屏功能就够了。
那么连续滚屏主要用于:
虽然能翻到底,但是你会发现要翻很久,而且会发现用自动滚屏功能抓到的内容只是最后一个片段,前面的内容没有了。比如,美丽说的最热商品
永远翻不到底,比如,今日头条
至于为什么有些网页滚屏到底只能抓到最后一段内容,那是因为这个网页为了节省内存,当往后滚屏的时候,前面的内容就从网页上删除了。
2. 规划一下定义几个抓取规则
在《连续悬停鼠标抓取浮窗内容》一文,我们定义了两个抓取规则,一个是在动作前用的,一个是在动作后用的。而对于连续滚屏,我们就要纠结一下了。通常不管滚几次屏,网页结构还是保持一样,是否还需要两个抓取规则?
解答这个问题很简单,但是还是需要根据具体情形分别应对。
情形1——需要两个规则:滚屏到底有翻页的情形
请注意:美丽说这个网页不是真正的瀑布流网页,只滚屏5次就到底了,所以,其实不用连续动作的滚屏,只需在DS打数机上打开滚屏就足够了。这里只是示例目的
分成两个抓取规则的原因是在美丽说_演示连续滚屏中还定义了翻页规则(请到爬虫线索工作台上去看),这样规划抓取规则后,会看到这样的执行步骤
从一个抓取规则开始,加载网页,并抓取生成了一个结果文件,这个文件是用第一个规则生成的,位于名字为“美丽说_演示连续滚屏”的文件夹中。
向下滚一屏,又生成了一个抓取结果文件,这个文件是用第二个规则生成的,位于名字为“美丽说_演示连续滚屏_更多”的文件夹中。
持续不断地重复上一步
定义第一级规则的时候,给滚屏次数做了限定,只滚动5次(如果填写-1,就是永远滚动)
当5次滚屏完成了,所有连续动作都结束了,则执行翻页操作。然后再次回到了第2步。
情形2——只要一个规则:不用翻页
如果抓取没有结尾的瀑布流,那么就不用定义两个抓取规则了。
如上图,抓取规则名是 今日头条_推荐新闻_抓瀑布流 ,在连续动作工作台输入的主题名是相同的,那么就只有一个抓取规则。同时可以看到,可以限定总共滚屏的次数,以及每次滚几下。
3. DS打数机运行选项
如果使用连续滚屏,DS打数机的两个设置十分重要:
关闭自定滚屏功能:必须设置
打开根据重复内容强制中断的功能:根据需要选择是否设置
关闭自动滚屏功能
因为连续滚屏是想滚一下抓一下,就不能把自动滚屏打开,否则会一口气滚到底。设置方法参看下图,只要把滚屏次数设置成 0 即可。这个参数也可以在crontab.xml文件中设置,用于周期性自动化采集情形。
打开重复内容监测
DS打数机不断地企图往下滚屏,必须告诉它什么时候停止,在MS谋数台上,可以限定滚多少屏就停止,如下图:
如果设置成-1,就是滚屏次数没有限制,那么必须在DS打数机上打开重复内容监测,一旦发现抓到的都是重复内容,就中断连续动作。
上图显示实际的运行情形,如果出现重复内容,就会在日志窗口显示告警消息。