我是Scrapy的新手,所以请耐心等待一下。
我想抓取this page以获取以下信息
使用Google Scraper我已经考虑了这些元素并在html页面中确定了它们的Xpath
//*[@id='recorddetails']/div/div[1]/h1
//*[@id='recorddetails']/div/div[1]/h2
//*[@id='recorddetails']/div/div[4]/div[2]/div[1]/p/text()
然后我在SHELL
下测试了以下Xpath查询sel.xpath("//*[@id='recorddetails']/div/div[1]/h1").extract()
sel.xpath("//*[@id='recorddetails']/div/div[1]/h2")
sel.xpath("//*[@id='recorddetails']/div/div[4]/div[2]/div[1]/p/text()").extract()
但是对于这些不同的Xpath查询,shell没有产生结果[],而它们似乎是正确编写的(没有语法错误)且足够准确。
如何找到具有正确Xpath的正确选择器以获取这些信息?
答案 0 :(得分:1)
查看firebug net tab,按XHR请求过滤,看来你所追踪的数据是在后面的AJAX调用中:
$ scrapy shell "http://cordis.europa.eu/projects/index.cfm?fuseaction=app.csa&action=read&xslt-template=projects/xsl/projectdet_en.xslt&rcn=95607"
....
>>> sel.xpath("//div[@class='projttl']/h1/text()").extract()
[u'PROTECTRAIL']
另外,最好让自己熟悉xpath语法,而不是使用那些自动xpath工具