change file crawler

parent 0bdc8e73
Pipeline #770 failed with stages
in 0 seconds
class TopPagesController < ApplicationController class TopPagesController < ApplicationController
def index def index
@cities = City.all
@industries = Industry.all
@total_jobs = Job.count @total_jobs = Job.count
@jobs = Job.limit(5).order(created_at: :desc) @jobs = Job.limit(5).order(created_at: :desc)
@jobs_of_cities = CityJob.top_city @jobs_of_cities = CityJob.top_city
......
<div class="search-bar">
<div class="row">
<div class="col-sm">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
</div>
<div class="col-sm">
<select class="form-control" id="exampleFormControlSelect1">
<%= @cities.each do |city| %>
<option><%= city.name %></option>
<% end %>
</select>
</div>
<div class="col-sm">
<select class="form-control" id="exampleFormControlSelect1">
<%= @industries.each do |industry| %>
<option><%= industry.name %></option>
<% end %>
</select>
</div>
<div class="col-2-sm">
<button class="btn btn-primary" type="submit">Search</button>
</div>
</div>
</div>
\ No newline at end of file
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
<div class="total-job">Having <%= @total_jobs %> jobs for you!</div> <div class="total-job">Having <%= @total_jobs %> jobs for you!</div>
</div> </div>
</div> </div>
<div class="search-bar"><%= render 'layouts/search_bar' %></div>
<br>
<div class="container"> <div class="container">
<div class="search-bar"><%= render 'layouts/search_bar' %></div>
<br>
<div class="job-list"><%= render 'layouts/show_jobs' %></div> <div class="job-list"><%= render 'layouts/show_jobs' %></div>
<div class="city-banner rounded">City</div> <div class="city-banner rounded">City</div>
......
...@@ -81,7 +81,7 @@ class Crawler ...@@ -81,7 +81,7 @@ class Crawler
next if link == 'javascript:void(0);' next if link == 'javascript:void(0);'
page = Nokogiri::HTML(URI.open(URI.escape(link))) page = Nokogiri::HTML(URI.open(URI.escape(link)))
name = page.search('p.name')&.text name = page.search('p.name')&.text
return if name.blank? next if name.blank?
address = page.css('div.content p').children[1]&.text address = page.css('div.content p').children[1]&.text
introduction = page.css('div.main-about-us').text introduction = page.css('div.main-about-us').text
...@@ -99,8 +99,8 @@ class Crawler ...@@ -99,8 +99,8 @@ class Crawler
def crawl_job def crawl_job
(1..10).each do |n| (1..10).each do |n|
info = Nokogiri::HTML(URI.open("https://careerbuilder.vn/viec-lam/tat-ca-viec-lam-trang-#{n}-vi.html")) info = Nokogiri::HTML(URI.open("https://careerbuilder.vn/viec-lam/tat-ca-viec-lam-trang-#{n}-vi.html"))
link = info.css('a.job_link').map { |link| link['href'] } links = info.css('a.job_link').map { |link| link['href'] }
link.each do |link| links.each do |link|
link_page = Nokogiri::HTML(URI.open(URI.escape(link))) link_page = Nokogiri::HTML(URI.open(URI.escape(link)))
row = link_page.search('div.bg-blue div.row') row = link_page.search('div.bg-blue div.row')
next if row.blank? next if row.blank?
......
...@@ -60,7 +60,6 @@ class CSVimporter ...@@ -60,7 +60,6 @@ class CSVimporter
industry_name = row["category"] industry_name = row["category"]
industries_relationship = Industry.where(name: industry_name) industries_relationship = Industry.where(name: industry_name)
if industries_relationship.blank? if industries_relationship.blank?
industry = Industry.create!(name: industry_name)
industries_relationship = Industry.where(name: industry) industries_relationship = Industry.where(name: industry)
job.industries << industries_relationship job.industries << industries_relationship
else else
...@@ -71,7 +70,6 @@ class CSVimporter ...@@ -71,7 +70,6 @@ class CSVimporter
location = location_data.gsub('["', '').gsub('"]', '') location = location_data.gsub('["', '').gsub('"]', '')
location_relationship = City.where(name: location) location_relationship = City.where(name: location)
if location_relationship.blank? if location_relationship.blank?
city = City.create!(name: location)
location_relationship = City.where(name: city) location_relationship = City.where(name: city)
job.cities << location_relationship job.cities << location_relationship
else else
......
...@@ -17,7 +17,7 @@ class JobParser ...@@ -17,7 +17,7 @@ class JobParser
next if link == 'javascript:void(0);' next if link == 'javascript:void(0);'
page = Nokogiri::HTML(URI.open(URI.escape(link))) page = Nokogiri::HTML(URI.open(URI.escape(link)))
name = page.search('p.name')&.text name = page.search('p.name')&.text
return if name.blank? next if name.blank?
address = page.css('div.content p').children[1]&.text address = page.css('div.content p').children[1]&.text
introduction = page.css('div.main-about-us').text introduction = page.css('div.main-about-us').text
......
...@@ -21,6 +21,6 @@ namespace :import do ...@@ -21,6 +21,6 @@ namespace :import do
end end
def url def url
'https://careerbuilder.vn/viec-lam/tat-ca-viec-lam-trang-1-vi.html' 'https://careerbuilder.vn/viec-lam/tat-ca-viec-lam-trang-1-vi.html'.freeze
end end
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