在XPath相同时提取数据

时间:2011-06-29 17:57:42

标签: html xpath scrapy jython

我是jython和scrapy的新手,但我对这些功能印象深刻。我的问题是,当XPath相同时,提取数据的最佳方法是什么?

例如:

<tr>
  <td>
    <a href="/user/Bob">Bob Job</a>
  </td>
  <td>hi</td>
  <td>280.0</td>
</tr>

我需要从所有3个td字段中获取信息。我使用firebug来提取显示我的XPath的XPath

/ HTML /体/表[2] / tbody的/ TR / TD [2] / DIV /表/ tbody的/ TR [2] / TD [3]

当XPath相同时,提取数据的最佳方法是什么?我可能只需要来自td [1]和td [3]的数据。

2 个答案:

答案 0 :(得分:1)

您必须确定一个标准来提取值并将它们放在相应的项目字段中。例如

link     = hxs.select('//td/a/href').extract()[0]
linktext = hxs.select('//td/a/text()').extract()[0]
number   = hxs.select('//td').re('\d+\.\d+')

答案 1 :(得分:0)

Firebugs copy xpath并不总是最佳的。

在抓取表时,首先找到一种方法来迭代<TR>字段,如//table[@id='results']/tr,然后执行另一个查询来获取每行所需的td字段。 //td更简单。