从href html标签中提取带有红宝石中nokogiri的链接(URL)?
Posted
技术标签:
【中文标题】从href html标签中提取带有红宝石中nokogiri的链接(URL)?【英文标题】:extract links (URLs), with nokogiri in ruby, from a href html tags? 【发布时间】:2010-10-25 19:06:48 【问题描述】:我想从网页中提取所有 URL,如何使用 nokogiri 来做到这一点?
示例:
站点 1 站点 2 站点 3结果应该是一个列表:
l = ['@987654321@', '@987654322@', '@987654323@'
【问题讨论】:
有没有人有使用正则表达式的类似解决方案?速度有什么不同吗? 【参考方案1】:你可以这样做:
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 属性。
【讨论】:
非常好,谢谢你拯救了我的一天 :) 一件事我现在从该网站获得了所有链接,但我只想要 div 中带有 clas “heat”的链接。这也可能吗? 此示例是否也适用于中的任何链接而不是实时链接?
@AaronMoodie:是的,它适用于类heat
的 div 中的任何链接。什么是实时链接?【参考方案2】:
好的,感谢 sris,这段代码非常适合我
p doc.xpath('//div[@class="heat"]/a').map |link|链接['href']
【讨论】:
以上是关于从href html标签中提取带有红宝石中nokogiri的链接(URL)?的主要内容,如果未能解决你的问题,请参考以下文章
从 BeautifulSoup 4.6 中的两个 HTML 标签之间提取 HTML
如何使用 PHP 从 XML“链接”标签中提取“href”属性?