【问题标题】:XPath to Parse "SRC" from IMG tag?XPath 从 IMG 标签解析“SRC”?
【发布时间】:2009-07-24 19:22:41
【问题描述】:

现在我成功地从一个 HTML 页面中抓取了完整的元素:

//img[@class='photo-large']

例如它会返回这个:

<img src="http://example.com/img.jpg" class='photo-large' />

但我只需要 SRC 网址 (http://example.com/img.jpg)。有什么帮助吗?

【问题讨论】:

    标签: html parsing xpath screen-scraping


    【解决方案1】:

    您已经非常接近自己回答这个问题了,以至于我有点不愿意为您回答这个问题。但是,以下 XPath 应该提供您想要的(当然,前提是源代码是 XHTML)。

    //img[@class='photo-large']/@src
    

    如需更多提示,请查看W3 Schools。他们有关于这些事情的优秀教程和很好的参考资料。

    【讨论】:

      【解决方案2】:

      使用 Hpricot 可以:

      doc.at('//img[@class="photo-large"]')['src']
      

      如果你有多个图像,下面给出一个数组:

      doc.search('//img[@class="photo-large"]').map do |e| e['src'] end
      

      但是,Nokogirimany times faster,而 Hpricot 是 “can be used as a drop in replacement”
      这里是 Nokogiri 的版本,用于选择属性的 XPath 在其中工作:

      doc.at('//img[@class="photo-large"]/@src').to_s
      

      或对于许多图像:

      doc.search('//img[@class="photo-large"]/@src').to_a
      

      【讨论】:

      • 偶然发现这个问题,我不禁想知道:是什么让您回答引用 ruby​​ 相关的依赖项?对我来说似乎很出乎意料。
      • @F*Pas 我问自己同样的问题:D
      【解决方案3】:

      //img/@src

      如果你想要图片的链接,你可以用这个。

      示例:

      <img alt="" class="avatar width-full rounded-2" height="230" src="https://avatars3.githubusercontent.com/...;s=460" width="230">
      

      【讨论】: