我在文件lib/crawler/page-crawler.rb
中有一个模块和类,如下所示:
require 'oga'
require 'net/http'
require 'pry'
module YPCrawler
class PageCrawler
attr_accessor :url
def initialize(url)
@url = url
end
def get_page_listings
body = Net::HTTP.get(URI.parse(@url))
document = Oga.parse_html(body)
document.css('div.result')
end
newpage = PageCrawler.new "http://www.someurl"
@listings = newpage.get_page_listings
@listings.each do |listing|
bizname = YPCrawler::ListingCrawler.new listing['id']
end
end
end
然后我有另一个模块&另一个文件lib/crawler/listing-crawler.rb
中的类看起来像这样:
require 'oga'
require 'pry'
module YPCrawler
class ListingCrawler
def initialize(id)
@id = id
end
def extract_busines_name
binding.pry
end
end
end
但是,当我尝试运行此脚本ruby lib/yp-crawler.rb
执行上面的page-crawler.rb
文件而没有YPCrawler
调用时,我收到此错误:
/lib/crawler/page-crawler.rb:23:in `block in <class:PageCrawler>': uninitialized constant YPCrawler::ListingCrawler (NameError)
问题出在这一行:
bizname = YPCrawler::ListingCrawler.new listing['id']
那么如何从page-crawler.rb
中的迭代器中调用那个?
修改1
当我执行`ListingCrawler.new listing ['id']时,我收到以下错误:
uninitialized constant YPCrawler::PageCrawler::ListingCrawler (NameError)
修改2
这是我项目的目录结构:
编辑3
我的yp-crawler.rb
看起来像这样:
require_relative "yp-crawler/version"
require_relative "crawler/page-crawler"
require_relative "crawler/listing-crawler"
module YPCrawler
end
答案 0 :(得分:1)
试试这个,在你的 yp-crawler.rb 中添加一行:
ads = pd.read_csv(data_filename,header=None,converters=converters, na_values='?')
这应该会在运行时自动包含 / crawler 目录中的所有文件。可能想对其他目录做同样的事情。
如果有帮助,请告诉我:)。
答案 1 :(得分:1)
在yp-crawler.rb
文件中,根据您发布的结构,您应该具有以下内容:
require 'yp-crawler/version'
require 'crawler/listing-crawler'
require 'crawler/page-crawler'