Python crawling #1

be1le·2022년 3월 16일
7

Crawling

목록 보기
1/5
post-thumbnail

인터넷에 정보가 방대해짐에 따라 우리는 그걸 활용하는 능력을 길러야할 필요가 높아졌다. 이런 방대한 양의 정보들을 우리가 분석하고 쉽게 활용하기 위해 데이터를 수집하는 행동을 크롤링(Crawling) 이라고 한다. 사람들이 스크래핑(Scraping)과 크롤링(Crawling)을 같은행위를 다르게 부르는 이름이라고 생각하는 경우가 많은데 정확히 따지고 보면 크롤링은 다양한 웹사이트의 페이지를 브라우징하는 작업까지를 일컫는 말이고 스크래핑은 그렇게 브라우징 된 데이터를 추출해서 가공하는 행위를 부르는 말이라 엄연히 같다고 할 수는 없다. 해외에서는 보통 Crawling 보다는 Scraping 이라는 단어로 많이 사용되지만, 우리에게 더욱 친숙한 Crawling이라는 이름으로 블로깅 시리즈를 시작해 보려 한다! 요새는 정말 크롤링이 가능한 사이트가 하늘의 별따기 이지만,(아무래도 여러회사가 갖고있는 데이터가 곧 그회사의 자산이 되는 경우가 많아서 의도적으로 막는듯 싶다.) 그렇다고 "요새 대부분 크롤링 안되는데 배워서 뭐해!"라는 접근은 틀렸어도 한참 틀렸다고 생각한다. 실제로 많은 사이트가 크롤링이 가능하고 실질적으로 우리가 project(혹은 product)를 구상하는 단계에 있어서 Crawling stack의 유무에 따라 해당 project의 퀄리티차이는 이루 말할 수 없을 것이다. 이렇게나 중요한 크롤링에 대한 정말 중요한 개념들을 함께 알아보고 익혀 보도록 하자!

크롤링은 처음인데...

아무리 잘나고 똑똑한 사람이라고 하더라도 처음 해보는 것은 모두가 처음이다. 나 또한 다르지 않다 :(
다만 크롤링이 중요한 정도에 비해서 그다지 어려운 stack이 아니라는 것을 우리는 상기하며 접근해 보도록 하자!


우리는 selenium이라는 라이브러리를 사용하여 크롤링을 할 계획인데, 여기서 라이브러리에 대한 개념은 "다른 사람들이 만들어둔 명령어 들의 집합" 이라고 생각하면 된다.
우리는 selenium이라는 라이브러리로 크롤링을 해야 하기에 우선 ! pip install selenium을 입력하여 다운로드 받아주도록 하자.

다운로드를 받았으니 import를 해서 우리에게 필요한 webdriver를 import해오자!
import를 했으니 browser 라는 변수에 webdriver.Chrome(크롬드라이버의 경로)이런식으로 할당해주면 이제 brower라는 변수를 호출시 Chrome webdriver를 사용할 수 있게 되었다.


해당하는 쉘을 실행(shift enter)하고 나면 우리는 이렇게 처음보는 다소 생소한 페이지하나를 열수 있는데 앞으로 우리는 이 페이지에서 우리에게 필요한 모든 정보를 크롤링 할 것이라는 것을 알아두도록 하자!

우리가 원하는 사이트로 이동해 보자


접속은 위의 사진처럼 url(꼭url이 아니여도 된다)이라는 변수에 우리가 이동하고 싶은 사이트의 url을 지정한뒤 위에서 webdriver.Chrome('./chromedriver')이 할당되어 있는 browser라는 변수를 호출하여

browser.get(url)

이렇게만 입력해주면

이렇게나 간편하게 네이버에 접속할 수 있다. 사실 생각보다
그리고 밑에 text shell을 보면
(이부분)
우리는 대략적인 url 패턴에 대해서 알 수 있는데. 위의 설명처럼 url의 구조는 주소뒤에 ?를 기준으로 뒷부분은 파라미터가 들어가게 되는 부분이다.

한번에 하나씩만 가능할까?

물론 아니다. 크롤링도 for문과 해당하는 url 주소의 유기적인 변수와 값의 관계만 파악한다면 얼마든지 여러가지 검색결과를 한번에 얻을 수 있다.


위의 코드처럼 searching_words에 ['파이썬','네이버','구글주가']라는 배열을 담아주면 for문을 돌면서 해당하는 keyword에 대한 검색을 해주는 실질적인 구문인
url = f'https://www.google.com/search?q={word}'
q(변수)={word}(값)에 자동으로 for문을 돌며 하나씩 넣어주고 위처럼

이렇게 3개의 결과를 한번에 얻을수 있다. 코드자체에 대한 이해도가 높으면 높을수록 크롤링또한 상황에 맞게, 더욱더 다양하고 합리적인 logic으로 원하는 데이터를 수집할 수 있다는 것을 알 수 있다!!

글을 마치며

크롤링을 앞으로 우리가 어떤 식으로 익혀나갈지 큰 그림을 그리는 시간이였다고 생각한다. 결국 크롤링또한 파이썬 코드로 이루어 지는것이니 너무 어렵게 생각하지 않고 큰흐름을 같이 익혀나가면서 우리가 원하는 정보를 좀더 손쉽게 얻을수 있는 유익한 블로깅이 되었으면 좋겠다.

해당 실습 gitrepo 바로가기

profile
그저 그런 개발자가 되지 않겠습니다.

0개의 댓글