问题:
翻页到最后一页还有翻页的标志,最后会陷入死循环,怎么解决这种问题,求教?

回答:
有多种解决方案:
1)研究一下DOM结构,看看最后一页的翻页标志在DOM中是否有变化,经常会发现@class或者@id有变化。如果有变化,那么把这个变化反映到自定义xpath中,比如是用not()函数,排除最后一页那种情形,那么到最后一页就能停止。
在MS谋数台的爬虫路线工作台上,点击“查看”按钮,就能在窗口下部的窗口中显示生成的翻页规则,可以直接修改XPath表达式,修改以后点击“保存修改”。
请注意:这样的修改称为人工微调抓取规则,必须先点击“存规则”以后才能微调,否则,点击“存规则”会把微调的结果冲掉。
2)用周期性抓取指令文件crontab.xml强制在抓取多少分页以后停止,即设置depth参数。
请注意:这种方法要合理估计翻页次数,防止漏抓
3)判断重复,也是需要crontab.xml进行设置,dupRatio表示达到百分之多少的重复率即停止抓取,而且是在连续三页都达到这个重复率后才终止。
请注意:目前不是针对文本内容进行判断,而是根据抓取到的下一级线索的重复率进行判断,如果没有设置下一级,那么就不能用这个方法
举报 使用道具
| 回复

共 1 个关于本帖的回复 最后回复于 2015-10-28 23:30

沙发
gooseeker_info 金牌会员 发表于 2015-10-28 23:30:17 | 只看该作者
本帖最后由 gooseeker_info 于 2015-10-28 23:32 编辑

今天一个网友贡献了一种更容易解决死循环的技巧:“下一页”标志通常在最后一页是灰色的,那么一般来说@class会变化,最后一页的“下一页”这个节点的@class值不一样。那么,就不要用代表“下一页”的那个text()节点做记号映射了,而是使用@class值作记号映射。这样就能省去写自定义xpath的麻烦。

使用@class而不是用text()做记号映射之前,要做一项设置,参看这个帖子的跟帖:http://www.gooseeker.com/doc/thread-340-1-1.html  
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • Gephi社会网络分析-马蜂窝游记文本分词并同
  • Gephi社会网络分析-基于马蜂窝游记文本以词
  • 知乎话题文本根据词语间距筛选后生成共词矩
  • 马蜂窝游记文本分词后以词语间距为筛选条件
  • 学习使用apriori算法挖掘关联关系

热门用户

GMT+8, 2024-4-26 20:23