Nokogiri, open-uri 사용하기
이번에는 루비를 사용해서 웹 파싱을 할 일이 생겨서 루비로 웹 파싱을 할 수 있게해주는 젬을 알아보았습니다.
브라우저에서 보는 것과 똑같이 정보를 가져오기 위해서는 "open-uri" 라는 젬을 사용하면 된다고 구글이 알려주었습니다 ㅎㅎ
그리고
open-uri 로 가져온 HTML 파일을 쉽게 파싱하도록 도와주는 것이 바로 "Nokogiri" 라는 젬이었습니다!
이름이 희한해서 rubygems.org 확인을 해봤는데 정말 맞았습니다(의심해서 죄송합니다;)
rubygems.org 에는 nokogiri 가 HTML, XML, SAX의 Reader parser라고 적혀있었습니다.
실제로 사용해보니 Python의 BeautifulSoup와 비슷했습니다.
HTML 잘라서 사용해줄 수 있게끔 해주는 부분이 매우 비슷했습니다.
다른 것이 좀 있다면 저는 Python으로 웹 파싱을 할 때 requests, BeautifulSoup 조합도 쓰지만 정규식을 사용하기도 해서
Nokogiri는 불편할 수도 있겠구나 생각했는데 아니었습니다.
찾아보니 웹사이트도 있습니다... http://www.nokogiri.org
require 'nokogiri'
require 'open-uri'
URL = 'URL 부분'
doc = Nokogiri::HTML(doc = open(URL))
doc.xpath('파싱하고픈 부분').each do |a|
puts a.content
end
이와 비슷한 코드로 파싱을 할 수 있었습니다.
물론 웹사이트가 복잡하다던가 파싱하고 싶은 것이 복잡한 위치에 있다면 소스는 조금 달라지겠지만
이것이 기본 코드입니다.
저도 이 코드로 파싱을 할 수 있었습니다.
파싱을 원하는 부분이 <div id="content"> 부분이라면
xpath 메서드에 '//div[@id="content"]' 와 같이 입력하면 됩니다.
뭐 다른 예를 들자면 <div id="content"><ul><li> 와 같은 곳에 원하는 정보가 있다면
'//div[@id="content"]/ul/li' 와 같이 쉽게 파싱할 수 있었습니다.
아무래도 루비 라는 언어와 친하지 않다보니 사용하는 것도 어색하고 쉽지 않습니다.
다음에는 루비 문법에 대해 알아볼까 합니다.
읽어주셔서 감사합니다 :)
'Ruby > Study' 카테고리의 다른 글
루비 기초 문법(2) (0) | 2016.04.18 |
---|---|
루비 기초 문법(1) (0) | 2016.03.28 |
루비 기본 상식! (0) | 2016.03.24 |
CodeStudy 시작하기 (0) | 2016.01.11 |
루비 공부 준비중 (0) | 2016.01.08 |