集搜客GooSeeker网络爬虫
标题:
class和id值怎么选择
[打印本页]
作者:
乡下人0004
时间:
2016-11-2 14:53
标题:
class和id值怎么选择
给采集内容做定位映射,class和id值要怎么选择?
作者:
xandy
时间:
2016-11-2 15:17
定位标志映射不是必须的,有必要才做。
什么情况要做?
如果只做内容映射的话,一旦网页结构发生细微改变,都会导致规则失效,而最好的技巧就是把内容映射与定位标志映射结合使用。这样可以大大降低失效的风险。
怎么做?
包含属性值(id或class值)的区块节点可以映射给采集内容做定位标志映射。都有的话优先偏好class,因为id值很可能会发生变化。
请参看:《
定位标志精确采集范围——以安居客租房采集为例
》
作者:
Fuller
时间:
2016-11-2 17:23
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,抓取内容相同,怎么破
》都是讲这个问题的。在“创建规则”和“爬虫路线”工作台上都是设置定位偏好的按钮,可以重新选择一下定位偏好,分别测试一下,找到一个最好的规则
欢迎光临 集搜客GooSeeker网络爬虫 (http://www.gooseeker.com/doc/)
Powered by Discuz! X3.2