当 XPath 相同时提取数据

发布于 2024-11-17 21:41:52 字数 464 浏览 2 评论 0原文

我是 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/body/table[2]/tbody/tr/td[2]/div/table/tbody/tr[2]/td[3]

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

I am new to jython and scrapy, but I am impressed by the capabilities that is has. My question is, what is the best way to extract data when the XPaths are the same?

For example:

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

I need to scrape the information from all 3 td fields. I use firebug to extract the XPath which displays my XPath as

/html/body/table[2]/tbody/tr/td[2]/div/table/tbody/tr[2]/td[3]

what is the best way to extract data when the XPaths are the same? I may only need data from td[1] and td[3].

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十秒萌定你 2024-11-24 21:41:52

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

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

You will have to identify a criteria to extract the values and put them in respective item fields. e.g.

link     = hxs.select('//td/a/href').extract()[0]
linktext = hxs.select('//td/a/text()').extract()[0]
number   = hxs.select('//td').re('\d+\.\d+')
○愚か者の日 2024-11-24 21:41:52

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

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

Firebugs copy xpath isn't always optimal.

When scraping tables, first find a way to iterate the <TR> fields like //table[@id='results']/tr, then do another query to grab the td fields you need for each row. //td Simpler that way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文