使用 HTTPparty 和 Nokogiri 获得 "undefined method `css' for nil:NilClass (NoMethodError)"

Getting "undefined method `css' for nil:NilClass (NoMethodError)" with using HTTPparty & Nokogiri

我不确定我做错了什么。我是编码新手,所以它可能非常简单。我环顾四周,找不到解决方案。它在 self.scrape_mainpage 函数的第一行。

require 'HTTParty'
require 'Nokogiri'
require 'byebug'
require 'sqlite3'




class Scraper

    attr_accessor :page
    restaurants = []


    def initialize(page="https://www.tripadvisor.com/Restaurants-g31892-Rogers_Arkansas.html")
        @page = page
        url_convert
    end

    def url_convert
        unparsed_page = HTTParty.get(@page)
        @url = Nokogiri::HTML(unparsed_page.body)
    end

    def self.scrape_mainpage
        href = @url.css('_15_ydu6b')[0]["href"].text
        byebug
    end

end

当您第一次调用 scrape_mainpage 时,尚未设置 @url 变量。您必须以设置调用 scrape_mainpage@url 的方式组织代码。也许你可以把 scrape_mainpage 变成一个实例方法,这意味着它前面没有 self 语句,然后你在初始化这个 class.

的实例后调用它