如何用ruby/nokogiri解析html源代码?
我已经成功地使用ruby(1.8)和nokogiri的css解析来从网页中提取前端数据。如何用ruby/nokogiri解析html源代码?
但是我现在需要从页面源代码中的“meta”标签中的数据页面中提取一些数据。
一个我需要的线路如下:
<meta name="geo.position" content="35.667459;139.706256" />
我使用XPath放一直没能得到它的权利审判。
任何帮助,需要什么语法将不胜感激。
感谢
这是一个CSS attribute selector一个很好的案例。例如:
doc.css('meta[name="geo.position"]').each do |meta_tag|
puts meta_tag['content'] # => 35.667459;139.706256
end
等效XPath表达式几乎是相同的:
doc.xpath('//meta[@name = "geo.position"]').each do |meta_tag|
puts meta_tag['content'] # => 35.667459;139.706256
end
哇谢谢我不知道你也可以使用元标签的CSS选择器。 如果我想从js获得纬度/经度,这同样适用吗? // – rollbahn 2010-10-27 05:26:37
不,Nokogiri不会做Javascript。您可以使用Nokogiri从HTML中提取Javascript,然后使用正则表达式来获取经纬度。 'doc.at('script')。content [/ GLatLng \\(([^)] +)\\)/,1]#=>“35.667459,139.706256”'例如。 – 2010-10-27 05:40:22
Aha好的非常感谢您的帮助 - 这真的让事情变得更清晰。 – rollbahn 2010-10-27 05:47:04
require 'nokogiri'
doc = Nokogiri::HTML('<meta name="geo.position" content="35.667459;139.706256" />')
doc.at('//meta[@name="geo.position"]')['content'] # => "35.667459;139.706256"
你说“我已经使用XPath放一直没能得到它的权利试过了。” **向我们展示您尝试过的**,以便我们可以帮助您做到正确。 – 2010-10-27 04:58:09
Thx Andy - 用各种方式说'// meta [blah]'等等。我只是无法得到正确的语法来将它拉出来。我真的想用CSS选择器来做,现在我知道如何。 – rollbahn 2010-10-27 05:32:42