본문 바로가기
파이썬

웹 크롤러 만들기 정리

by 바나나하나 2018. 11. 16.
반응형

웹크롤링 하기 위해서 필요한 지식 순서대로


웹 크롤링 전반에 대한 흐름을 잘 설명한 슬라이드


1. 파이썬 설치 + 에디터 + 명령프롬프트 사용법


2. 파이썬 기본지식


3. 웹크롤링을 하기 위해서는 html에서 내가 원하는 정보를 찾을 수 있는 능력이 필요한 것 같다.

html이 어떤 것인지 이해할 필요가 있는 것 같다.


4. 크롤러, 파싱, 스크래핑

크롤링(Craling)이란?

크롤링은 웹 크롤러(web crawling)에서 출발한 말로 무수히 많은 인터넷 상의 페이지(문서, html 등)를 수집해서 분류하고 저장한 후에 나중에 쉽게 찾아볼 수 있도록 하는 역할을 하는 일종의 로봇이다.


그래서 크롤링은 데이터를 수집하고 분류하는걸 크롤링이라고 한다.


다이아몬드 광산에 예를 들면 2만평짜리 광산이 있는데 이 중에 다이아몬드가 주로 나오는 곳이 입구에서 직진해서 200미터 떨어진 부분과, 입구에서 오른쪽으로 꺾어서 400미터 떨어진 부분이라는 이런 정보가 어디에 있는지에 대한 위치를 분류하는 것이라고 보면 된다.


파싱(Parsing)이란?

파싱(Parsing)은 어떤 페이지(문서, html 등)에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보로 가공하는 것을 말하는 것이다. 다이아몬드가 많이 나오는 위치로 이동을 일단 한 후에 돌을 많이 캔다음에 다이아몬드만 쏙쏙 뽑아서 보석으로 가공하는 과정하고 비슷하다고 보면 된다.


스크래핑(Scraping) 이란?

데이터를 수집하는 모든 작업을 말한다.



'데이터분석'에 대한 이야기가 많이 나오면서 크롤링, 파싱에 대해 궁금해 하는 사람들이 많이 있고 나도 크롤러, 파서, 스크래퍼를 주로 개발 하다보니 미묘한 차이가 궁금해서 한번 찾아보았다.


요즘은 그냥 인터넷에서 프로그램으로 데이터를 추출해서 사용하는 작업을 크롤링, 파싱 등으로 혼용해서 쓰는 것 같다. 경계가 모호한 말이기도 하고 크롤러를 만들다 보면 파싱 기능이 들어가고 파서를 만들려면 크롤링 하는 기능이 일부 들어가기도 하는 등의 일도 많기 때문.





requests 모듈 = Python에서 HTTP 요청을 보내는 모듈, HTTP 통신을 위한 파이썬 라이브러리



beautifulsoup같은걸 module이라고 한다. 모듈...

모듈 안에는 클래스와 함수가 포함된다. 

module = class + def 라고 하면 될려나?

누군가가 만들어 놓은 모듈을 가져오는 것을 import라고 한다.

다른 사람들이 만들어 놓은 기능들을 가져와서 사용하기 위해



import bs4 from BeautifulSoup를 사용한다.


    import request

    import bs4 from BeautifulSoup


selenium이라는 모듈을 사용해서

웹페이지를 마치 내가 클릭해서 누르는 것처럼 실행시킬 수 있다.


Selenium으로 웹크롤링하기

https://beomi.github.io/2017/02/27/HowToMakeWebCrawler-With-Selenium/


drive라는 변수에(어느 변수든 상관 없는듯) webdriver인 크롬을 실행할 수 있도록 해준다.

driver = webdriver.Chrome(path)


그리고 drive라는 변수 뒤에 get이라는 명령어를 사용하여 해당 url을 열 수 있도록 한다.

driver.get("https://www.tistory.com/auth/login?redirectUrl=https%3A%2F%2Fwww.tistory.com%2F")


입력창에 입력하기

입력창의 이름을 찾는 방법!

1. 입력창 위에 커서를 올려둔다.

2. 우클릭 후 메뉴에서

3. 검사

4. 개발자 소스보는 창이 뜬다.

5. 그 소스에서  name = "이름" 하고 써있는 곳에 어떤 이름인지 찾아준다.

6. driver.find_element_by_name("찾은 이름").send_keys("쓰고 싶은 내용")



Selenium에서 버튼 누르기

https://kiddwannabe.blog.me/221323738780

이 사이트에서 잘 설명해준다.

우클릭 -> 검사클릭->해당 소스에서 우클릭 -> copy -> copy xpath


구글 크롬 개발자도구에서 어떻게 xpath를 찾아내는지를 알면

driver.find_element_by_xpath('찾아낸xpath주소').click()

하게 되면 그 xpath를 클릭하게 된다.


불러온 모듈에서 함수를 불러내서 사용하는 것을 메소드를 호출한다고 한다.

마치 어떤 기능을 사용하라고 명령하듯이

변수에 점을 붙인 다음 함수명을 사용하면된다.

lsh.get()

이런식이다.






반응형

댓글