Ruby 使用HPricot查找链接文件

Ruby 使用HPricot查找链接文件,ruby,hpricot,Ruby,Hpricot,我一直在玩弄HPricot,但经过大量的搜索,我还没能解决这个问题 我正在尝试解析一个HTML页面,并在mp3文件中找到所有带有href的标记。到目前为止,我已经 <ul> <% @page.search('//a[@href*=mp3]').each do |link| %> <li> <%= link.inner_text %> </li> <%

我一直在玩弄HPricot,但经过大量的搜索,我还没能解决这个问题

我正在尝试解析一个HTML页面,并在mp3文件中找到所有带有href的标记。到目前为止,我已经

<ul>
    <% @page.search('//a[@href*=mp3]').each do |link| %>    
        <li>
            <%= link.inner_text %>
        </li>
    <% end %>
</ul>
它工作正常,正则表达式,
/href\s*=\s*\“([^\“]+)(.mp3)/
也可以工作。我只是不知道如何将两者结合起来

有没有一个好的例子或文档可以让我参考,以了解我可以使用.search函数做什么


谢谢你找到了答案。方法是attributes(而不是attr),并且括号必须是正方形<代码>链接。属性['href']找到了答案。方法是attributes(而不是attr),并且括号必须是正方形
link.attributes['href']

您可以使用

link.attr('href')

作为CSS3选择器,您可能需要考虑<代码> @ HeRF$= .MP3(而不是<代码> *= /代码>),因为它只匹配在<代码>中结束的属性。MP3 < /P> 编辑: 你说得对,对不起。我发现,
attr
只是
Hpricot::Elements
set
的别名。正确的方法确实是:

link.attributes['href']

尽管如此,我还是想推荐Nokogiri作为Hpricot的代理

您可以使用访问属性
href

link.attr('href')

作为CSS3选择器,您可能需要考虑<代码> @ HeRF$= .MP3(而不是<代码> *= /代码>),因为它只匹配在<代码>中结束的属性。MP3 < /P> 编辑: 你说得对,对不起。我发现,
attr
只是
Hpricot::Elements
set
的别名。正确的方法确实是:

link.attributes['href']

尽管如此,我还是想推荐Nokogiri作为Hpricot的代理

我已经能够使用将所有指向mp3文件的链接归档,但是我仍然不确定如何在该链接中隔离href。我已经能够使用将所有指向mp3文件的链接归档,但是我仍然不确定如何在该链接中隔离href。感谢andre-r,当我使用该方法时,我收到了错误未定义的方法“attr”。我已经包括了HPricot和open uri gems。有什么我遗漏的吗?谢谢andre-r,当我使用未定义的方法'attr'时,我得到了错误。我已经包括了HPricot和open uri gems。有什么我遗漏的吗?