我正在用Nokogiri
和Ruby on Rails
创建一个刮刀。我的目标是从一个特定的网页上抓取工作。我创建了下面的代码,它产生了一组职务。所以这很好用。
我现在的问题是,我想把这些头衔添加到我的空缺数据库中。当我键入Vacancy.create(companyname=jobs[0])
时,它应该创建一个具有数组中第一个职务的Vacancy
。
但它给了我一个错误:
app/services/job_service.rb:18:in":未初始化常量空缺(姓名错误(
所以看起来它不知道类Vacancy
。因此,我需要文件vacancy.rb:
require_relative(../models/vacancy.rb')
但它给了我另一个错误:
未初始化常量ApplicationRecord(NameError(
所以我现在认为我在这里做了一些根本错误的事情。我是不是把整个scraper文件放错了文件夹(我应该把它放在rake文件夹中吗(?。我只想执行类似Vacancy.create
的东西,这样它就可以把它推送到我的空缺数据库(又名Jobs(中。
这是刮刀(job_service.rb(:
require 'open-uri'
require 'nokogiri'
url = "https://www.savedroid.com/#karriere-section"
html_file = open(url).read
html_doc = Nokogiri::HTML(html_file)
jobs = []
html_doc.search('.job').each do |element|
jobs << element.text.strip
end
Vacancy.create(companyname=jobs[0])
确保模型已创建,并且表中有必要的字段
让我们把解析器的代码放入rails服务中:
class Jobs
def self.jobs
return @jobs if @jobs
require 'open-uri'
require 'nokogiri'
url = "https://www.savedroid.com/#karriere-section"
html_file = open(url).read
html_doc = Nokogiri::HTML(html_file)
jobs = []
html_doc.search('.job').each do |element|
jobs << element.text.strip
end
@jobs = jobs
end
end
然后你可以称之为内部轨道控制器:
VacancyController < ApplicationController
def create
Jobs.jobs.each do |job|
Vacancy.create(companyname: job)
end
end
end