给采集内容做定位映射,class和id值要怎么选择?
举报 使用道具
| 回复

共 2 个关于本帖的回复 最后回复于 2016-11-2 17:23

沙发
xandy 论坛元老 发表于 2016-11-2 15:17:20 | 只看该作者
定位标志映射不是必须的,有必要才做。
什么情况要做?
如果只做内容映射的话,一旦网页结构发生细微改变,都会导致规则失效,而最好的技巧就是把内容映射与定位标志映射结合使用。这样可以大大降低失效的风险。
怎么做?
包含属性值(id或class值)的区块节点可以映射给采集内容做定位标志映射。都有的话优先偏好class,因为id值很可能会发生变化。
请参看:《定位标志精确采集范围——以安居客租房采集为例
举报 使用道具
板凳
Fuller 管理员 发表于 2016-11-2 17:23:17 | 只看该作者
xandy 发表于 2016-11-2 15:17
定位标志映射不是必须的,有必要才做。
什么情况要做?
如果只做内容映射的话,一旦网页结构发生细微改变, ...

从html规范上说,1)id要求是一个唯一的值,也就是说,在网页上,用一个id能定位到唯一一个DOM节点
2)而class是代表相同一类的DOM节点,主要目的是为了给他们设定统一的显示样式,比如,一张表的每一列或者每一行都显示相同的颜色


但是,即使不遵照规范也不会引起错误,也就是说id不一定唯一。

基于这些特点,我们可以这样选择
1)有时候翻页中断,是因为定义到抓取规则中的id是唯一的,每一页都不一样,所以,到下一页就失效了。
2)一个规则无法应用于网页结构相同的一组网页,这个原因也可能是id的唯一性造成的
3)做了样例复制映射,但是只抓到第一条,那可能也是由于id的唯一性造成的

id这么不好用,但是为什么要选择它?这是因为在某些场合下,id代表了一种确定性。

class也能引起问题
1)抓取表格的时候,有时候所有字段都是抓了第一列,内容串了,这是自动生成的规则错误地使用了class,结果分不出每一列了。

避免不合适的定位标志影响抓取规则》和《有相同的class,抓取内容相同,怎么破》都是讲这个问题的。在“创建规则”和“爬虫路线”工作台上都是设置定位偏好的按钮,可以重新选择一下定位偏好,分别测试一下,找到一个最好的规则
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

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

热门用户

GMT+8, 2024-4-30 00:55