在shell下找不到正确的xpath

时间:2014-02-12 14:12:06

标签: xpath scrapy

我是Scrapy的新手,所以请耐心等待一下。

我想抓取this page以获取以下信息

  • 项目首字母缩略词(PROTECTRAIL)
  • 项目简介(铁路运输综合安全铁路产业伙伴关系)
  • 项目长描述(面对增强建筑物和基础设施保护的问题)

使用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的正确选择器以获取这些信息?

1 个答案:

答案 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工具