写python爬虫的时候为了省事,通常会在在浏览器中打开F12,右键复制 xpath 。
谷歌浏览器这里有一个坑,在这费了半天时间
复制的xpath为
python中如下://*[@id=“mainFrame”]/div/table/tbody/tr/td[1]//text()
使用浏览器插件 xpath helper 测试匹配成功!
到了python代码里怎么写都匹配不到,如下
xxx.xpath('//*[@id="mainFrame"]/div/table/tbody/tr/td[1]//text()')
匹配到的结果为空列表 [ ]。
原因:
浏览器对 xpath 进行了 “优化” ,导致从浏览器里直接复制出来的 xpath 放在python中运行匹配不到。
解决方案:
删除多余的 tbody 。代码如下:
#这里多了个tbody,删掉即可
xxx.xpath('//*[@id="mainFrame"]/div/table/tbody/tr/td[1]//text()')
#修改后代码如下,成功匹配:
xxx.xpath('//*[@id="mainFrame"]/div/table/tr/td[1]//text()')