在爬某网站的用户地址的过程中发现,
/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。**之前有在网上看到过例子,用户头跟爬虫息息相关,有哥们换了个用户头之前,一直返回空列表,换了之后麻溜地爬下来了,这也可以作为一种告诫吧。
还有其他建议的欢迎补充,本人也会慢慢完善。