Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这个xpath不起作用_Python_Xpath_Scrapy - Fatal编程技术网

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只是选择器的一个实例,创建方式类似于so
sel=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。同样,我们是否应该开始考虑网页的内容不是完全静态的,表格可能是动态存在或不存在的?