【问题标题】:finding linked files with HPricot使用 HPricot 查找链接文件
【发布时间】:2009-10-30 08:53:25
【问题描述】:

我一直在玩 HPricot,但经过大量搜索后,我无法解决这个问题。

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

<ul>
    <% @page.search('//a[@href*=mp3]').each do |link| %>    
        <li>
            <%= link.inner_text %>
        </li>
    <% end %>
</ul>

工作正常,还有一个正则表达式 /href\s*=\s*\"([^\"]+)(.mp3)/ 也可以工作。我只是不确定如何将两者结合起来。

是否有一个很好的例子,或者有人可以指出我的文档,以便弄清楚我可以用 .search 函数做什么。

谢谢

【问题讨论】:

  • 我已经能够使用 ,但我仍然不确定如何隔离该链接中的 href。

标签: ruby hpricot


【解决方案1】:

您可以通过

访问属性href

link.attr('href')

作为 CSS3 选择器,您可能需要考虑 @href$=.mp3(而不是 *=),因为它仅匹配 .mp3 结尾的属性

编辑: 你是对的,对不起。我发现attr 只是set 的别名Hpricot::Elements。正确的做法确实是:

link.attributes['href']

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

【讨论】:

  • 感谢 andre-r,当我使用该方法时,我收到错误未定义方法“attr”。我已经包含了 HPricot 和 open-uri gems。有什么我想念的吗?
【解决方案2】:

找到了答案。该方法是属性,(不是attr),而且括号必须是方括号。 link.attributes['href']

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2014-07-08
    • 2020-04-02
    相关资源
    最近更新 更多