我使用引入nokogiri刮了一个网站,看起来像这样:如何使用Nokogiri获得div内的所有内容?
<div class="BOX">
<div class="apple">This is an apple.</div>
<p>Apple a day, doctor away</p>
</div>
<div class="BOX">
<div class="iphone">This is an iPhone.</div>
<div class="android">This is an Android.</div>
<a href="www.apple.com">Apple home page</a>
<p>Snoop Lion has both. He's rich.</p>
</div>
我想刮“BOX”专区内的一切。每个“BOX”都有自己独特的div和HTML标签,没有明显的图案。我将如何做到这一点?
我第一次尝试是这样的:
require 'uri-open'
require 'nokogiri'
doc = Nokogiri::HTML(open('http://www.examplesite.com'))
doc.css('BOX').each do |box|
puts box.content
end
但它没有返回。请给我一个解释发生了什么事?
这是正确的。 Nokogiri的CSS选择器遵循与正常的HTML CSS选择器相同的规则。 '.foo'表示标签的'CLASS'参数,'#foo'表示标签的'ID'参数。而且,就像在页面中使用普通的CSS一样,CLASS选择器可以返回在DOM中找到的多个标签,而ID选择器将返回第一个。 (具有多个相同的ID标记违反了HTML规范,因此您不应该找到多个标识。) –