我是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]的数据。
答案 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
更简单。