使用Nokogiri在Url中获取特定元素

时间:2015-06-03 22:37:09

标签: ruby web-scraping nokogiri

我有这种html结构:

 <table class="list">
  <tbody>
    <tr>
      <td>
      </td>
      <td>
        <a href="club.do?codeClub=01670001&millesime=2015"></a>
      </td>
    </tr>
  </tbody>
</table>

我希望获得<td>中包含<tr> table的{​​{1}}的第二个class list中包含的链接。 然后实际上在每个Url我只对codeclub的价值感兴趣: codeClub = 01670001

如何使用Nokogiri实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用nokogiri获取锚标记a,如下所示:

require 'nokogiri'

doc = Nokogiri::HTML.parse(<<-HTML_END)
 <table class="list">
  <tbody>
    <tr>
      <td>
      </td>
      <td>
        <a href="club.do?codeClub=01670001&millesime=2015"></a>
      </td>
    </tr>
  </tbody>
</table>
HTML_END

link = doc.css('table.list tbody tr td:nth-child(2) a')[0]['href']
 => "club.do?codeClub=01670001&millesime=2015"

然后你可以使用正则表达式来获取codeClub的整个查询参数:

link[/codeClub=([^&]*)/].gsub('codeClub=', '')
 => "01670001"