0

我猜这对于有一点 Nokogiri 经验的人来说是一个微不足道的问题,但我无法在网上找到的文档或教程中找到答案。

我有一个像这样的 Nokogiri 文件:

page = Nokogiri::HTML(open("http://www.example.com"))

该页面包含以下标签:

<a title="could be anything" href="http://www.example.com/foo"></a>

href如果值title未知,我如何获得值?

4

3 回答 3

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'] }

如果您想从在线 URL 中进行选择,您可以使用

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open('http://stackoverflow.com/'))

a_with_title = doc.xpath('//a[@title]').map { |e| puts e['href'] }
于 2013-04-18T17:54:29.240 回答
1

我终于弄明白了。我相信,以下方法可以href从具有标题属性的第一个链接元素中选择page.css('a[title]')[0]['href']

我以为page.css('a[title]')是选择title属性的值,但实际上它选择了整个元素。然后,您可以引用此元素以从中获取值。

于 2013-04-18T17:51:12.423 回答
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"]
于 2013-04-18T18:47:51.090 回答