为什么这个xpath不起作用

时间:2014-03-11 20:26:16

标签: python xpath scrapy

我在这个页面上正在废弃

http://www.modeluxproperties.com/?m=search&web=1&act=details_web&id=503

我想获取所有Amenities

的值

我的xpath是

normalize-space(.//div[@id='specimen']/div[@class='section']/table//tr[4]/td/table//tr/td/text())

我得到一个空洞的结果,为什么请?

1 个答案:

答案 0 :(得分:1)

设施的正确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只是Selector的一个实例,创建方式如此sel = Selector(response)

调试那种问题Firefox firepath扩展非常有用,对于Chrome有xpath helper。通常你应该先找到带有firepath的正确的xpath,然后在scrapy shell中尝试它,它真的很简单:

scrapy shell
fetch "http://[your url]"

然后你会得到选择器对象sel,你可以在那里测试你的xpath。通常需要使用scrapy shell进行测试,因为浏览器正在修改页面上显示的html。例如,在表的情况下,大多数浏览器将tbody添加到表中。