【发布时间】:2017-05-22 23:24:48
【问题描述】:
如何使用 Nokogiri 搜索以下块:
<div id="live_list_cat_16" class="football-block sport-block" style="display:block;">
</div>
【问题讨论】:
标签: html ruby web-scraping nokogiri
如何使用 Nokogiri 搜索以下块:
<div id="live_list_cat_16" class="football-block sport-block" style="display:block;">
</div>
【问题讨论】:
标签: html ruby web-scraping nokogiri
试试这个
doc.search('div#foo.bar')
这是如何工作的?
search 和 at 方法都接受 CSS 查询div#foo 找到一个 id 为 foo 的 div
div.bar 找到一个类为 bar 的 div
【讨论】:
.in-play-odds,它会返回它。但是,它找不到.in-play-odds 的任何子类,如果我搜索.in-play-odds,它只会返回一个空块作为<div id="live_list_container" class="in-play-odds"> </div>。任何想法为什么它不能在这个块内搜索?
div 元素是在页面加载后用javascript 动态创建的。您是否检查过它们是否存在于您提供给 nokogiri 的 html 字符串中?
您可以使用#some_id 作为 CSS 选择器。
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html>
<body>
<div id="foo" class="bar">text</div>
<div id="foo2" class="bar">more_text</div>
</body>
</html>
EOT
doc.search('#foo').to_html # => "<div id=\"foo\" class=\"bar\">text</div>"
doc.search('div.bar').to_html # => "<div id=\"foo\" class=\"bar\">text</div><div id=\"foo2\" class=\"bar\">more_text</div>"
请记住,特定 ID 在文档中只允许存在一次。
【讨论】: