Gem Nokogiri - 웹페이지 크롤링
Nov 28, 16
dev
rails
Nokogiri는 selector를 이용해 웹페이지의 정보를 가져올 수 있게 해줍니다. 링크를 타고 가면서 크롤링 하는 것을 원할 경우엔, Mechanize를 사용하세요.
Nokogiri gem 설치
gem install nokogiri
설치 오류시
limbiconv error는 nokogiri tutorial 참고 libxml이 없는 경우엔 설치
brew install libxml
xz 오류시 workaround nokogiri-issue-1483
brew uninstall xz
요약
doc = Nokogiri::HTML(open(url))
#CSS selector로 찾기
doc.css('nav ul.menu li a', 'article h2').each do |link|
# attributes
puts link.attributes["id"].value if link.attributes["id"]
puts link.content
end
한글 인코딩 문제
doc = Nokogiri::HTML(open('http://blog.naver.com/xxxx', 'r:binary').read.encode('utf-8', 'euc-kr'))
한글 인코딩 시 간혹 euc-kr encoding으로 처리할 수 없는 문자가 있는 경우가 있다. :invalid, :undef 옵션을 주면, error를 방지하고, encoding되지 않는 문자를 ‘?’로 바꾼다. Justin Weiss
doc = Nokogiri::HTML(open('http://blog.naver.com/xxxxx', 'r:binary').read.encode('utf-8', 'euc-kr', invalid: :replace, undef: :replace))
XML 파싱시
XML 파싱 할 때는, HTML 함수를 쓰지마세요.
doc = Nokogiri::XML(open(url))