크롤링을 이용해서 신문기사를 가져오거나, 웹툰의 덧글을 가져오거나 하는 행위정도는 이전 포스팅에서 다뤘다

하지만, 웹사이트 내용을 수집하는게 아니라 그 웹사이트를 통체로 수집하고 싶은 경우는 어떻게 해야할까?


방법은 여러가지가 있다.


1. 리눅스에서 wget을 이용하는경우. (옵션에따라 소스만 보거나, 페이지를 구성하는 자원을 다운로드 할 수 있다)


2. httrack을 이용하는경우. (윈도우, 맥, 리눅스 전부 지원)


3. selenium IDE를 이용한 경우 (http://seleniumhq.org/projects/ide/) 사실 이건 뭔지 잘 모르겠다....


4. 브라우저의 CTRL+S기능을 이용하는 경우. (selenium을 통해 자동화 가능)


대략 지금 생각나는건 이정도이다.


위 방법들은 스크랩하는 정도가 모두 다르다.

wget을 이용하면 HTML에 있는 <img src=... 부분은 긁어오는데 이전 포스팅에서 네이버에서 보여줬던 <img data-src... 부분은 긁어오지 못하거나...

httrack을 이용하면 zip파일도 생기고 알수없는 파일도 생기면서 속도 또한 느렸다.

CTRL + S를 이용하는 방법이 가장 완성도 높은 페이지를 긁어왔다.

(IE, chrome, firefox 등 브라우저에따라 다운받는게 다르다. 글쓴이는 chrome를 이용했다)

속도 또한 빠르고 <img data-src=...부분이나 css내부에서 background 부분도 긁어왔다.

(완성도의 여부는 스크랩해온 데이터를 인터넷 연결을 끊고 실행해서 확인했다)


만약 어떤 페이지 전체를 긁는 과정이 필요하다면 selenium을 통해서 key press로 CTRL+S를 통해서 스크랩하는게 가장 좋은 방법이라고 생각한다.

'crawling' 카테고리의 다른 글

crawler ( 혹은 crawling )  (0) 2016.10.09

crawler란 웹사이트를 방문하여 각종 정보를 자동으로 수집하는 것을 말한다.

(ex. 신문기사 제목을 모두 수집하고 싶은경우,,또는 내용까지 수집할 경우 사람이 직접할수 없으니 crawler를 이용해서 자동화를한다.)

(이 작업을 crawling이라한다)


흔히 말하는 crawling은 우리가 보는 웹 사이트의 '소스 보기'를 통해서 해당 소스를 긁어오고 파싱하는 방식으로 정보를 가져온다.

(ctrl+u를 누르면 해당 페이지 소스를 볼 수 있다)


R언어로 크롤링을 하는경우에는 readLines(url, encoding=...)함수를 이용해서 홈페이지 소스를 긁어오고, stringr패키지를 이용해서 파싱하는 방법이 일반적이다.

python 같은 경우에는 from urllib import request를 이용해서 웹페이지를 긁어와서 BeautifulSoup4(bs4)를 이용해서 파싱하는게 일반적이다.

(scrapy를 이용하는 방법도 있다)


하지만 위 경우는 자바스크립트를 실행시키지 않은 상태의 소스코드를 불러온다.

CTRL+U를 통해서 확인한 소스는 자바스크립트를 실행하지 않은 소스코드이고

F12를 통해서 개발자도구로 확인한 소스는 자바스크립트를 실행한 소스코드이다.


만약 자바스크립트를 실행한 코드가 필요하면, 혹은 크롤링 하는 사이트가 로그인이 필요한 경우,, 등등 어떤 액션이 추가적으로 필요하면

R에서는 Rselenium, python에서는 selenium을 이용하면 된다.

selenium은 브라우저를 통해서 스크랩을 하기 때문에 브라우저에서 자바스크립트를 실행시키거나,,,로그인을 하거나 등의 행위가 가능하다.


위에 적은 방법들은 TEXT를 긁는다는 특징이 있다. (selenium은 경우에따라 아닐수도있다)


다음 포스팅에서는 jpg, css, js등등 홈페이지를 구성하는 자원들을 긁어오는 방법에 대해서 다룬다.

'crawling' 카테고리의 다른 글

web page 스크랩 (full download)  (0) 2016.10.09

+ Recent posts