ruby-on-rails - 使用 Ruby Mechanize 进行解析

标签 ruby-on-rails ruby-on-rails-3 mechanize mechanize-ruby

我正在尝试使用 Mechanize Gem 解析网站。到目前为止,这就是我所拥有的:

page = agent.get("http://www.greatgiftsformen.com/price-range-under-c-131_142.html?page=all")
page.parser.xpath('//tr[(((count(preceding-sibling::*) + 1) = 2) and parent::*)]//*[contains(concat( " ", @class, " " ), concat( " ", "productListing-data", " " ))]')[5]

我得到了这个产品的元素:
=> #<Nokogiri::XML::Element:0x81c175ec name="td" attributes=[#<Nokogiri::XML::Attr:0x81c17d58 name="valign" value="top">, #<Nokogiri::XML::Attr:0x81c17eac name="align" value="center">, #<Nokogiri::XML::Attr:0x81c17ec0 name="class" value="productListing-data">] children=[#<Nokogiri::XML::Element:0x805fa174 name="a" attributes=[#<Nokogiri::XML::Attr:0x81c13794 name="href" value="http://www.greatgiftsformen.com/gas-pump-retro-liquor-dispenser-p-249.html?osCsid=05f5dbb816874ece6db883c2c48d7ae1">] children=[#<Nokogiri::XML::Element:0x8068e270 name="img" attributes=[#<Nokogiri::XML::Attr:0x81c115ac name="src" value="product_thumb.php?img=images/prod/liquordisp-gas.jpg&w=160&h=160">, #<Nokogiri::XML::Attr:0x81c115c0 name="width" value="160">, #<Nokogiri::XML::Attr:0x81c115d4 name="height" value="160">, #<Nokogiri::XML::Attr:0x81c11714 name="border" value="0">, #<Nokogiri::XML::Attr:0x81c11728 name="alt" value="Gas Pump Retro Liquor Dispenser">, #<Nokogiri::XML::Attr:0x81c11750 name="title" value="Gas Pump Retro Liquor Dispenser">, #<Nokogiri::XML::Attr:0x81c11764 name="class" value="fotgal">]>]>]> 

但是,当我尝试获取 href 时,我返回 nil:
url = item.attributes['href']
 => nil 

最佳答案

需要添加子节点:

url = item.children[0].attributes['href'].to_s

关于ruby-on-rails - 使用 Ruby Mechanize 进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250991/

相关文章:

ruby-on-rails - Rails 是否 rake db :migrate needs a javascript runtime?

javascript - 这篇 jQuery AJAX 帖子保存数据是否错误?

ruby-on-rails - 在保存到 Rails 框架之前,如何通过循环去除 Active Record 中的列值?

perl - 如何使用 WWW::Mechanize 的输出?

ruby-on-rails - 搜索提交后 Mechanize 未加载完整网页

ruby-on-rails - Ruby on Rails 应用程序的分离

ruby-on-rails - 如何将数据库中缺少的参数字段合并到 rails 中的参数哈希

jquery - 更改 jquery 事件,当使用 capybara 运行 cucumber 时不会触发它

ruby-on-rails-3 - 适用于 Mac 的 Rails 代码重构工具

python - 这个错误对 python 中的 Mechanize 意味着什么?