Skip to content

jeongminkyo/ruby_crawling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ruby Crawling

목적

crawling으로 유명한 python에 beautifulsoup이 있지만, ruby on rail가 익숙하므로 ruby on rail에서 crawling을 하기 위해 nokogiri gem을 이용해 crawling을 연습.

nokogiri gem

공식 사이트 : http://www.nokogiri.org/ https://github.com/sparklemotion/nokogiri

크롤링을 하기 위해서 많이 사용되는 gem.

설치

gem install nokogiri

사용법

require 'nokogiri'
require 'open-uri'

# Fetch and parse HTML document
doc = Nokogiri::HTML(open('http://www.nokogiri.org/tutorials/installing_nokogiri.html'))

puts "### Search for nodes by css"
doc.css('nav ul.menu li a', 'article h2').each do |link|
  puts link.content
end
mechanize gem

공식 사이트 : https://github.com/sparklemotion/mechanize

웹을 컨트롤하기 위해서 사용되는 gem. 기본적으로 watir과는 다르게 브라우저가 불필요. 로컬에서 할 때는 watir이 문제가 없었으나, 배포를 위해 서버에 설치를 하였을 경우, 이슈가 생겨서 watir를 대신 mechanize를 사용.

설치

gem install mechanize 

사용법

require 'mechanize'
 
mechanize = Mechanize.new
 
page = mechanize.get('http://naver.com/')
 
puts page.title
Configuration

ruby 2.2.4

rails 5.0.7

aws - ec2

server - ubuntu 16.04, apache2, passenger

mysql

Service

crawling한 값들을 브라우저를 띄울때 마다 읽어오면 페이지 로딩 시간이 느려져서 크롤링 한 값들을 DB에 넣은 후, DB에 있는 값들을 페이지에 표시.

crawling한 값들을 DB에 저장은 rak job으로 생성하여, crontab을 이용해서 매 시간 마다 rake job을 수행.

Crawling 한 값들을 읽어와서 기존의 DB값과 비교한 후, DB의 값이랑 다른 경우, update를 수행, 새로운 값이 들어오면 DB에 insert를 함.

crawling한 값들을 통계를 내기 위해서, chartkick gem을 사용.

About

Ruby Nokogiri gem을 이용한 crawling

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published