使用标准结构解析网页如下:
<html>
<body>
<table>
<tbody>
<tr class="active">
<td>name1</td>
<td>name2</td>
<td>name3</td>
</tr>
</tbody>
</table>
</body>
</html>
对于我的生活,我无法访问'tbody'或'tr'元素。
response = open('http://my_url')
node = Nokogiri::HTML(response).css('table')
puts node
返回
#<Nokogiri::XML::Element:0x8294c08c name="table" attributes=[#<Nokogiri::XML::Attr:0x8294c014 name="id" value="beta-users">] children=[#<Nokogiri::XML::Text:0x82953bc0 "\n">]>
我尝试了各种技巧,但似乎无法深入挖掘到比“桌子”更低级别的孩子。
充其量,我可以使用
到达最低级别的Text对象node.children
但是
node.children.text
返回“\ n”。
尽管搜索了几个小时,但没有人知道如何解决这个问题。有什么想法吗?
答案 0 :(得分:1)
您的样本中有一个非封闭的类值,它应该是:
<html>
<body>
<table>
<tbody>
<tr class="active">
<td>name1</td>
<td>name2</td>
<td>name3</td>
</tr>
</tbody>
</table>
</body>
</html>
更正后,您可以:
node = Nokogiri::HTML(response).css('table tbody tr td')
node.each {|child| puts child.text}
name1
name2
name3