【问题标题】:Parsing nodes with Nokogiri?用 Nokogiri 解析节点?
【发布时间】:2013-04-03 16:11:52
【问题描述】:

我正在解析网页,我想通过查找<div id="image"> 来获取来自<img src> 的链接。

如何在 Nokogiri 中执行此操作?我尝试遍历子节点,但失败了。

<div id="image" class="image textbox ">
  <div class="">
    <img src="img.jpg" alt="" original-title="">
  </div>
</div>

这是我的代码:

doc = Nokogiri::HTML(open("site.com"))

doc.css("div.image").each do |node|

    node.children().each do |c|

    puts c.attr("src")
    end     

end 

有什么想法吗?

【问题讨论】:

  • 你遇到了什么失败?你用的是什么代码?

标签: ruby nokogiri


【解决方案1】:

试试这个,让我知道它是否适合你

require 'nokogiri'

source = <<-HTML
 <div id="image" class="image textbox ">
   <div class="">
     <img src="img.jpg" alt="" original-title="">
   </div>
 </div>
HTML

doc = Nokogiri::HTML(source)

doc.css('div#image > div > img').each do |image|
  puts image.attr('src')
end

输出:

img.jpg

【讨论】:

  • 效果很好!我必须仔细看看css方法。谢谢:)
  • 快速问题,我如何快速将我得到的值转换为字符串以便我可以操作它?编辑:发现你只是在对象上使用方法文本。 txt = img.text
【解决方案2】:

这里有一个很好的资源:@​​987654321@

稍微修改一个例子,我明白了:

doc = Nokogiri::HTML(open("site.com"))

doc.css("div.image img").each do |img|

    puts img.attr("src")

end 

尽管您应该尽可能使用 ID 选择器 #image,而不是类选择器 .image。它的速度要快得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-03
    • 2012-01-24
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多