我正在製作一個網頁刮板,所以我可以學習如何。當我在終端運行它,我得到的是一條錯誤消息:爲什麼我會在Ruby和Nokogiri中得到這個未定義的方法錯誤?
scraper.rb:23:在「item_container」:未定義的方法「CSS」的零:NilClass(NoMethodError)
這裏是我的代碼在scraper.rb
require 'HTTParty'
require 'Nokogiri'
class Scraper
attr_accessor :parse_page
def initialize
doc = HTTParty.get("http://store.nike.com/us/en_us/pw/mens-nikeid-lifestyle-shoes/1k9Z7puZoneZoi3")
@parse_page ||= Nokogiri::HTML(doc) #memoized @parse_page so it only gets assigned once.
end
def get_names
names = item_container.css(".product-name").css("p").children.map { |name| name.text }.compact
end
def get_prices
prices = item_container.css(".product-price").css("span.local").children.map { |price| price.text }.compact
end
private
def item_container
parse_page.css(".grid-item-info")
end
scraper = Scraper.new
names = scraper.get_names
prices = scraper.get_prices
(0...prices.size).each do |index|
puts "- - - index: #{index + 1} - - -"
puts "Name: #{names[index]} | Price: #{prices[index]}"
end
end
有誰能告訴我爲什麼我得到這個錯誤?我該如何解決它?提前致謝。
我相信你需要小寫傳遞給'require'的值。這樣做後,這段代碼爲我工作。 – pdoherty926
我剛剛按照你的建議做了。我仍然遇到同樣的錯誤。 – NeyLive
這正是我所擁有的,也是Ruby 2.3.1。你安裝了哪個版本的Nokogiri? – NeyLive