我猜这对于那些对Nokogiri有一点经验的人来说是一个微不足道的问题,但我在网上找到的文档或教程中找不到答案。
我有这样的Nokogiri文件:
page = Nokogiri::HTML(open("http://www.example.com"))
该页面包含以下标记:
<a title="could be anything" href="http://www.example.com/foo"></a>
如果href
的值未知,如何获得title
的值?
答案 0 :(得分:2)
如果您希望具有href
属性的a
元素的title
属性值,您可以使用Nokogiri的xpath
,如下所示:
require 'nokogiri'
doc = Nokogiri::HTML(File.open('sample.html'))
a_with_title = doc.xpath('//a[@title]').map { |e| puts e['href'] }
如果您想在线选择网址,可以使用
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('http://stackoverflow.com/'))
a_with_title = doc.xpath('//a[@title]').map { |e| puts e['href'] }
答案 1 :(得分:1)
我终于明白了。我相信,以下内容可用于从第一个link元素中选择href
,其标题属性为page.css('a[title]')[0]['href']
。
我原以为page.css('a[title]')
正在选择title
属性的值,但实际上它选择了整个元素。然后,您可以引用此元素以从中获取值。
答案 2 :(得分:0)
require 'nokogiri'
doc = Nokogiri::HTML::DocumentFragment.parse <<-SCRIPT
<a title="xx" href="http://www.example1.com/foo1"></a>
<a title="aa" href="http://www.example2.com/foo2"></a>
<a id=5 href="http://www.foo.com/foo3"></a>
<a title="zz" href="http://www.example3.com/foo4"></a>
<a id=5 href="http://www.test.com/foo5"></a>
SCRIPT
p doc.search("a").map { |nd| nd['href'] if nd.key?('title')}.compact
#=> ["http://www.example1.com/foo1", "http://www.example2.com/foo2", "http://www.example3.com/foo4"]