使用xpath抓取HTML表



我正在尝试使用ruby xpath和nokogiri在HTML表中编写"cell4"值:

<html>
<body>
<h1>Heading</h1>
<p>paragraph.</p>
<h4>Two rows and three columns:</h4>
<table border="0">
<tr>
  <td>cell1</td>
  <td>cell2</td>
</tr>
<tr>
  <td>cell3</td>
  <td>cell4</td>
</tr>
</table>
</body>
</html>

我有以下简单的代码,但它带来[]。这个问题一定很简单,但是在google

上找不到合适的答案。
#!/usr/bin/ruby -w
require 'rubygems'
require 'nokogiri'
page1 = Nokogiri::HTML('test_simple.html')
a = page1.xpath("//html/body/table/tr[2]/td[2]")
p a

xpath在REXML上按预期工作,因此它是正确的,但在nokogiri上则不然。因为这将用于更大的html,所以不能使用REXML。问题似乎不只是与表,只有其他标签内容

或不能被刮除。

恕我直言,使用Nokogiri中的CSS API要容易得多(XPath总是让我头疼):

page.css('td') # should return an array of 4 table cell nodes
page.css('td')[3] # return the 4th 'td' node, counting starts at 0

多亏了taro的评论,我花了一点力气就解决了这个问题

下面是正确的代码:
#!/usr/bin/ruby -w
require 'rubygems'
require 'nokogiri'
page1 = Nokogiri::HTML(open('test_simple.html'))
a = page1.xpath("/html/body/table/tr[2]/td[2]").text
p a

相关内容

  • 没有找到相关文章

最新更新