Python 为什么这个xpath不起作用
我正在翻这一页 我想获得所有Python 为什么这个xpath不起作用,python,xpath,scrapy,Python,Xpath,Scrapy,我正在翻这一页 我想获得所有便利设施的值 我的xpath是 normalize-space(.//div[@id='specimen']/div[@class='section']/table//tr[4]/td/table//tr/td/text()) 我得到一个空结果,为什么请?正确的xpath是: "//table//div[@id='specimen']//table/tr[4]/td/table/tr/td/text()" 所以您的xpath实际上是完全正常的,也许您正在以某种奇
便利设施的值
我的xpath是
normalize-space(.//div[@id='specimen']/div[@class='section']/table//tr[4]/td/table//tr/td/text())
我得到一个空结果,为什么请?正确的xpath是:
"//table//div[@id='specimen']//table/tr[4]/td/table/tr/td/text()"
所以您的xpath实际上是完全正常的,也许您正在以某种奇怪的方式提取它?您可以这样提取它:
sel.xpath("//table//div[@id='specimen']//table/tr[4]/td/table/tr/td/text()").extract()
其中sel只是选择器的一个实例,创建方式类似于sosel=Selector(response)
为了调试这类问题,Firefox firepath扩展非常有用,对于Chrome来说有xpath helper。通常情况下,您应该从使用firepath查找正确的xpath开始,然后在scrapy shell中尝试,它非常简单,例如:
scrapy shell
fetch "http://[your url]"
然后您将获得选择器对象sel,您可以在那里测试xpath。使用ScrapyShell进行测试通常是必要的,因为浏览器正在修改页面上显示的html。例如,对于表,大多数浏览器都会向表中添加tbody 我在tr[4]中没有看到table元素。我想你重复了这张桌子/tr@deanosaur不,我完全看到tr[4]中的表格。检查firebug如果你认为你的意思是tr[3]
,tr[4]
不包含任何表格我现在在tr[4]中看到了表格,但它看起来像它的got TEXT。同样,我们是否应该开始考虑网页的内容不是完全静态的,表格可能是动态存在或不存在的?