gpt4 book ai didi

Ruby Mechanize 获取 href 属性值

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:18 25 4
gpt4 key购买 nike

我是 Ruby 的新手,但在爬虫中摸索前行。我正在使用 Mechanize,到目前为止它看起来还不错。虽然我现在有点难以捕获一堆链接的 href 属性。

我需要获取 href 属性,以便我可以打开每个页面并抓取更多信息。

这可能吗?

这是一个例子。

all_results.search("table.mcsResultsTable tr").each do |tablerow|
installer_link = tablerow.search("td:first-child a").href
puts installer_link + "\n"

最佳答案

这里有一个例子可以帮助你,关于如何提取 href 属性:

require 'nokogiri'

doc = Nokogiri::HTML.parse <<-eot
<a name="html" href = "http://foo">HTML Tutorial</a><br>
<a name="css" href = "http://fooz">CSS Tutorial</a><br>
<a name="xml" href = "http://fiz">XML Tutorial</a><br>
<a href="/js/">JavaScript Tutorial</a>
eot

doc.search("//a").class # => Nokogiri::XML::NodeSet
doc.search("//a").each {|nd| puts nd['href'] }
doc.search("//a").map(&:class)
# => [Nokogiri::XML::Element, Nokogiri::XML::Element, Nokogiri::XML::Element,
# Nokogiri::XML::Element]

输出:

http://foo
http://fooz>CSS Tutorial</a><br>
<a name=
/js/

基本上 doc.search("//a") 会给你 nodesets,它只不过是 Nokogiri::XML::Node 的集合(s)。您可以使用方法 Nokogiri::XML::Node#[]获取任何特定节点的属性值。 Nokogiri 将属性/值对保存为哈希。看下面:

require 'nokogiri'

doc = Nokogiri::HTML.parse <<-eot
<a target="_blank" class="tryitbtn" href="tryit.asp?filename=try_methods">Try it yourself &raquo;</a>
eot

doc.at('a').keys
# => ["target", "class", "href"]
doc.at('a').values
# => ["_blank", "tryitbtn", "tryit.asp?filename=try_methods"]
doc.at('a')['target'] # => "_blank"
doc.at('a')['class'] # => "tryitbtn"

关于Ruby Mechanize 获取 href 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19047868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com