我们在提取一批相似网址时,页面中的字段一般是在同一位置,通过同一条定位XPath可以将其全部匹配到。但是存在这样一种情况,同一字段在不同页面的位置略有不同。这种情况会导致数据字段缺失或者错位的情况,这个时候可以通过修改字段的xpath进行解决。
1.数据字段缺失
数据字段缺失:采集的某个字段,在A页可以正常采集,在B页采集为空。
示例网站:
https://fgw.sh.gov.cn/fgw_zcjd/20220822/ab80c123e81840c688ade0caa2f21a11.html
https://fgw.sh.gov.cn/fgw_zcjd/20220728/8802ea2324a643cbbfee5fc3b87dfad3.html
Step1:按照需求,采集数据。这里我们采集这2个详情页文章的标题、时间、正文链接
Step2:启动采集看一下,第2个详情页的【时间】字段并未采集到。这是因为第2个详情页的网页结构和第1个不同,第1个详情页的【时间】定位XPath,不适用第2个详情页了。

Step3:我们可以通过设置备用位置xpath解决这个问题。
说明:
备用元素的设置可参考教程:设置备用位置
2.数据字段错位
数据字段错位:采集页面的某个字段内容a,在A页可以正常采集到字段内容a,在B页采集的时候采集的时候,采集到的是字段内容b。
示例网址:
https://baike.baidu.com/item/%E9%A9%AC%E9%BE%99/35974?fromModule=lemma_search-box
https://baike.baidu.com/item/%E5%88%98%E4%BA%A6%E8%8F%B2/136156?fromModule=lemma_search-box
采集百度百科搜索人名后的信息,采集字段姓名、国籍、出生日期。
Step1:按照需求,采集数据。
Step2:切换网址观察数据预览,切换网址后观察每个字段获取的数据,可以发现国籍字段获取到了性别内容
Step3:修改【国籍】字段的xpath,用一个xpath准确唯一定的位到【国籍】内容,把国籍字段xpath修改为://div[@data-pid="card"]//dt[contains(text(),"籍")]/following-sibling::dd[1]
修改xpath之后,可以看到两个网页都可以正常定位到【国籍】字段内容了
说明:
这里修改xpath需要掌握xpath知识,xpath知识学习教程:Xpath入门