【发布时间】:2010-10-25 19:06:48
【问题描述】:
我想从网页中提取所有 URL,如何使用 nokogiri 来做到这一点?
示例:
结果应该是一个列表:
l = ['@987654321@', '@987654322@', '@987654323@'
【问题讨论】:
-
有没有人有使用正则表达式的类似解决方案?速度有什么不同吗?
我想从网页中提取所有 URL,如何使用 nokogiri 来做到这一点?
示例:
结果应该是一个列表:
l = ['@987654321@', '@987654322@', '@987654323@'
【问题讨论】:
你可以这样做:
doc = Nokogiri::HTML.parse(<<-HTML_END)
<div class="heat">
<a href='http://example.org/site/1/'>site 1</a>
<a href='http://example.org/site/2/'>site 2</a>
<a href='http://example.org/site/3/'>site 3</a>
</div>
<div class="wave">
<a href='http://example.org/site/4/'>site 4</a>
<a href='http://example.org/site/5/'>site 5</a>
<a href='http://example.org/site/6/'>site 6</a>
</div>
HTML_END
l = doc.css('div.heat a').map { |link| link['href'] }
此解决方案使用 css 选择器查找所有锚元素并收集它们的 href 属性。
【讨论】:
中的任何链接而不是实时链接?
heat 的 div 中的任何链接。什么是实时链接?
好的,感谢 sris,这段代码非常适合我
p doc.xpath('//div[@class="heat"]/a').map { |link|链接['href'] }
【讨论】: