我在这个页面上正在废弃
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())
我得到一个空洞的结果,为什么请?
答案 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添加到表中。