ruby - 如何在 Ruby 中获取 HTML 图像标签属性值?

标签 ruby parsing

我有这个 HTML 代码:

<img src="../../../media/test.jpg" alt="test" />

但只想要这个:

"../../../media/test.jpg"

我如何在 Ruby 中获得它?

最佳答案

使用 Nokogiri

require 'nokogiri'

doc = Nokogiri::XML::DocumentFragment.parse <<-end
<img src="../../../media/test.jpg" alt="test" />
end
node = doc.at_css('img')
# => #(Element:0x49a28e8 {
#      name = "img",
#      attributes = [
#        #(Attr:0x49a2da2 { name = "src", value = "../../../media/test.jpg" }),
#        #(Attr:0x49a2e24 { name = "alt", value = "test" })]
#      })
node.attributes 
# => {"src"=>
#      #(Attr:0x50324ba { name = "src", value = "../../../media/test.jpg" }),
#     "alt"=>#(Attr:0x50324b0 { name = "alt", value = "test" })}
node.keys
# => ["src", "alt"]
node.values
# => ["../../../media/test.jpg", "test"]
node['src']
# => "../../../media/test.jpg"
node['alt']
# => "test"

如果你想删除属性alt,你可以执行以下操作:

node.delete('alt')
node
# => #(Element:0x49a28e8 {
#      name = "img",
#      attributes = [
#        #(Attr:0x49a2da2 { name = "src", value = "../../../media/test.jpg" })]
#      })
node.values
# => ["../../../media/test.jpg"]

关于ruby - 如何在 Ruby 中获取 HTML 图像标签属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754686/

相关文章:

ruby-on-rails - Aptana 3 和 ruby​​ 调试

ruby - 正则表达式问题 - 用空格替换所有前面没有制表符的换行符

php - 如何打开在div中解析的链接?

java.text.ParseException : Unparseable number: "ä¢è»ÅÒËÅèÍ"

sql-server - 解析数据库中的所有存储过程

python - 将 Python 解析为实例列表

ruby-on-rails - sass-rails 需要 sprockets 2.0.0 但 rails 4.1.0 需要 sprockets 2.12.1

ruby - 对 "<<"的作用感兴趣

ruby-on-rails - mustache 中标签助手的正确程序

java - Android - 将数据恢复到 SQLite 时的 AsyncTask 或线程