我正在遵循Nokogiri railscast为Groupon编写一个scraper。当我运行rb文件时,我不断地得到以下错误。
Flamingo Conference Resort and Spa Deal of the Day | Groupon Napa / Sonoma
traveldeal_scrape.rb:9:in `block in <main>': undefined method `text' for
nil:NilClass (NoMethodError)
这是我的刮削锉。
require 'rubygems'
require 'nokogiri'
require 'open-uri'
url = "http://www.groupon.com/deals/ga-flamingo-conferences-resort-spa?c=all&p=0"
doc = Nokogiri::HTML(open(url))
puts doc.at_css("#content//h2/a").text
title = doc.at_css("#content//h2/a").text
price = doc.at_css("#amount").text[/[0-9.]+/]
puts "#{title} - #{price}"
puts doc.at_css(".deal")[:href]
编辑:上面的代码现在有效!
我使用了与教程完全相同的rubular表达式。我也不确定我的CSS标签是否正确。谢谢
我想你有一个疏忽:
doc.css(".deal").each do |deal|
title = item.at_css("#content//a").text
price = item.at_css("#amount").text[/[0-9.]+/]
puts "#{title} - #{price}"
puts item.at_css(".deal")[:href]
end
应为:
doc.css(".deal").each do |deal|
title = deal.at_css("#content//a").text
price = deal.at_css("#amount").text[/[0-9.]+/]
puts "#{title} - #{price}"
puts deal.at_css(".deal")[:href]
end
正则表达式的问题是它缺少您试图转义的美元符号:.text[/$[0-9.]+/]