首页 文章

在XPath相同时提取数据

提问于
浏览
1

我是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

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

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

    Firebugs复制xpath并不总是最佳的 .

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

相关问题