爬虫中xpath的返回空列表,xpath的长短和匹配问题

在爬某网站的用户地址的过程中发现,

/html/body/div[3]/div/div[3]/div[2]/ul/li[4] #这是Chrome上直接对应地址条目,右键复制下来的xpath路径

然而以上代码匹配出来是空列表,

//div[3]/div[2]/ul/li[4] #这是最后测试能正确匹配到地址的xpath路径,在后面加个/text()就可以返回地址

现在还不知道为啥xpath有时候越短越能匹配到,先把这个问题抛出来,也许将来会有答案。

对于想爬东西的朋友,有时候爬东西一直返回空的列表,可以遵循以下的方法来debug

**1。**先看看requests.get().text或者content.decode(‘utf-8’),或者urllib里read到的是源码匹不匹配,f12开发者工具找xpath不一定可靠!,原因是复制出来的xpath路径的元素是根据索引来找的,如果要爬取大量同样格式的网站的话,虽然整体布局是一样的,但是可能中间缺少元素,这样的话很有可能中间的某个div[3](只是个比方)之类的标签根本不存在,这样就无法正确匹配到了,更好的办法是!!! 谷歌搜索谷歌应用商店,下载一个插件叫做xpath helper, 最好是多利用xpath的contains或者starts-with等语法,匹配的精度更高。 ,发现问题第一时间看源码对不对,有些甚至源码是加密的,比如煎蛋网。

2。确定源码没问题,就开一个新py文件来调试,分段调试,看哪些信息能成功爬下来,哪些不能,找出了出错的之后,就抓出来测试,xpath也好beautifulsoup也好,进行路径测试。这样一般能解决绝大部分的问题了。

**3。**之前有在网上看到过例子,用户头跟爬虫息息相关,有哥们换了个用户头之前,一直返回空列表,换了之后麻溜地爬下来了,这也可以作为一种告诫吧。

还有其他建议的欢迎补充,本人也会慢慢完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值