我在只找到我发现的 inner_html 的 for 循环中解析时遇到了麻烦。我只想在该内容中再次使用 XPath。我是 ruby 的新手,所以更好的解决方案摆在桌面上。
#!/usr/bin/ruby -w
require 'rubygems'
require 'nokogiri'
page1 = Nokogiri::HTML(open('mycontacts.html'))
# Search for nodes by xpath
page1.xpath('//html/body/form/div[2]/span/table/tbody/tr').each do |row|
#puts a_tag.content
puts "new row"
row_html = row.inner_html
puts row_html
puts ""
name = row_html.xpath("/td[1]").text
puts "name is " + name
end
我在 for 循环中的每一行的输出类似于:
new row
<th>First Name</th>
<th>Last Name</th>
<th>Phone</th>
这是我得到的错误:
screen-scraper.rb:20:in block in <main>': undefined method
xpath' for # (NoMethodError)
我想解析每个 tr 并获取如下数据:Barney Rubble、Fred Flintstone
<table>
<tbody>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
<tr>
<td>Fred</td>
<td>Flintstone</td>
</tr>
<tr>
<td>Barney</td>
<td>Rubble</td>
</tr>
</tbody>
</table>
我愿意接受建议。我在想只解析 for 循环内的 inner_html 更容易,但如果有更简单的方法可以在 for 循环内获取节点,那也可以。
谢谢....