Commit 079c82d0 by Hoang Phuc

Add service for crawler

parent 9b293818
Pipeline #610 failed with stages
in 0 seconds
class CityService
def import cities
City.import cities
end
def check_exist_or_create_city city_title
cities = City.where("title LIKE ?", city_title)
if cities.length == 0
city = City.create(title: city_title)
else
city = cities[0]
end
return city
end
end
\ No newline at end of file
class CompanyService
def check_exist_or_create_company company_attributes
find_company = Company.find_or_create_by(company_attributes)
return find_company.id
end
end
\ No newline at end of file
class IndustryService
def import industries
Industry.import industries
end
def check_exist_or_create_industry industry_title
industries = Industry.where("title LIKE ?", industry_title)
if industries.length == 0
industry = Industry.create(title: industry_title)
else
industry = industries[0]
end
return industry
end
end
\ No newline at end of file
class JobService
def check_exist_or_create_job job_attributes
job = Job.find_or_create_by(job_attributes)
return job
end
end
\ No newline at end of file
......@@ -83,16 +83,16 @@ namespace :crawler do
description: html_company_detail.at_css(".jobsby-company .company-introduction .company-info .info .content ul").inner_html.squish
}
# Check exist or create company
job_attributes[:company_id] = check_exist_or_create_company(company_attributes)
job_attributes[:company_id] = CompanyService.new.check_exist_or_create_company company_attributes
end
end
# Create job
job = check_exist_or_create_job(job_attributes)
job = JobService.new.check_exist_or_create_job job_attributes
# Defind cities array
cities = []
item.css(".figure .figcaption .caption .location ul li").each do |city|
city = check_exist_or_create_city(city.text.squish)
city = city_service.check_exist_or_create_city city.text.squish
cities << city
end
# Create city_job
......@@ -103,7 +103,7 @@ namespace :crawler do
end
# Create industry_job
html_job_detail.css(".search-result-list-detail .tabs #tab-1 .job-detail-content .detail-box .industry p a").each do |ele|
industry = check_exist_or_create_industry(ele.text.gsub(",","").squish)
industry = industry_service.check_exist_or_create_industry ele.text.gsub(",","").squish
industries << industry
end
......@@ -142,7 +142,7 @@ namespace :crawler do
end
cities = cities_in_country + cities_foreign
if cities.length > 0
City.import cities
city_service.import cities
end
end
......@@ -156,37 +156,15 @@ namespace :crawler do
}
end
if industries.length > 0
Industry.import industries
industry_service.import industries
end
end
def check_exist_or_create_company(company_attributes)
find_company = Company.find_or_create_by(company_attributes)
return find_company.id
def city_service
@city_service ||= CityService.new
end
def check_exist_or_create_industry(industry_title)
industries = Industry.where("title LIKE ?", industry_title)
if industries.length == 0
industry = Industry.create(title: industry_title)
else
industry = industries[0]
end
return industry
end
def check_exist_or_create_city(city_title)
cities = City.where("title LIKE ?", city_title)
if cities.length == 0
city = City.create(title: city_title)
else
city = cities[0]
end
return city
end
def check_exist_or_create_job(job_attributes)
job = Job.find_or_create_by(job_attributes)
return job
def industry_service
@industry_service ||= IndustryService.new
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment