【问题标题】:Scraping page with correct xpath using Mechanize and nokogiri使用 Mechanize 和 nokogiri 使用正确的 xpath 抓取页面
【发布时间】:2015-06-06 11:08:24
【问题描述】:

我正在尝试访问一个表中包含的数据,该表本身包含在一个带有class ='L1' 的表中。 所以基本上我的html结构是这样的:

<table class="L1">
  <table>
    <tr></tr>
    <tr>
      <td></td>
      <td><a href="">data</a></td>
    </tr>
    <tr>
      <td></td>
      <td><a href="">data</a></td>
    </tr>
    ...ect...ect
  </table>
</table>

我需要捕获所有&lt;a&gt; &lt;/a&gt; 中包含的数据,这些数据包含在&lt;tr&gt; &lt;/tr&gt; 中的第二个中,但仅从表的第二个&lt;tr&gt; 开始。

到目前为止,我想出了这个:

html_body = Nokogiri::HTML(body)
links = html_body.css('.L1').xpath("//table/tbody/tr/td[2]/a[1]")

但在我看来,这并没有表达我只想在第二个&lt;tr&gt;(包括第二个&lt;tr&gt;)之后开始的事实? 什么是正确的代码来做到这一点?

【问题讨论】:

    标签: ruby web-scraping nokogiri mechanize


    【解决方案1】:

    您可以使用position() 选择您想要的后面的元素。

    html_body = Nokogiri::HTML(body)
    links = html_body.css('.L1').xpath("//table/tbody/tr[position()>1]/td[2]/a[1]")
    

    正如那个 SO 回答中的 cmets 所说,记住 XPath 从 1 开始计数,所以 &gt;1 会跳过第一个 tr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多