먼저, 해당 글은 크롤링을 어떻게 하는지 알려주는 글이 아님을 알려드립니다!!

각 종 모듈 혹은 메서드에 대한 세부적인 설명을 드릴 수 있는 수준이 되지 않기 때문에 설명이 부족할 수 있습니다.!!

 

#인스타그램 크롤링 하기!

 

실전에 부딫히면서 배워나가는 것을 좋아하기 때문에 바로 공모전에 도전하게 되었습니다

여러분 또한 그런 마음으로 이 곳에 들어왔을 꺼라 믿습니다

 

크롤링에 사용되었던 가장 중요한 모듈은 두 가지 였습니다. 바로 BeautifulSoup와 Selenium 입니다

오늘은 그 중에서 BeautifulSoup에 대해서 포스팅 해보고자 합니다.

  1. BeautifulSoup 설치


가장 먼저 해야 할 것은 BeautifulSoup을 설치하는 것입니다.

Python 내장 함수가 아닌 이상, 명령프롬프트(cmd)를 활용하여 Python 내부에 설치해 주어야 합니다

pip install beautifulsoup4 

이라는 코드를 명령프롬프트에 입력하면 다운로드 받을 수 있습니다.
여기서 pip은 beautifulsoup4 와 같은 패키지를 install, uninstall 할 수 있는 명령어 입니다.

(참고로 pip3 는 Python3 버전, pip은 python 2버전 입니다. 버전에 맞게 설치하셔야 합니다!!)

 

  1. Python 내부 import

 

1번에서 진행했던 일은 Python에서 모듈을 이용할 수 있도록 설치한 것입니다.
이제 Python 내부에서 사용하려면 import를 해야합니다.

from bs4 import BeautifulSoup

매우 간단하죠..? 사실 여기까지는 거의 다들 아시는 내용일 것이라 생각됩니다.

 

  1. BeautifulSoup와 requests를 활용하여 데이터 얻기

 

 

import requests

requests 는 html을 가져오는 도구입니다.

 

urllib도 있지만 requests가 간단하고 기능이 유용하기 때문에 선호됩니다(개인적으로만..)

사용했던 코딩으로 간단한 예를 들어보겠습니다

 

네이버의 뉴스 > 경제 부분을 예로 들겠습니다.

어떤 방식으로 크롤링을 하게될지는 모르지만 만약, 한 페이지의 내용을 가져오고

다음 페이지로 넘어가야한다면 높은 확률로 위 방법을 쓰게 될 것입니다.

 

방법은 다음과 같습니다

1. 찾고자하는 정보가 있는 페이지로 이동  
2. 페이지가 바뀔 때, url이 어떤 식으로 바뀌는 지 찾아냄.  
3. 알아낸 정보를 토대로 페이지를 자동으로 받아올 수 있는 문장을 구성

 

위 순서를 토대로 네이버 뉴스 > 경제 부문을 직접 보여 드리겠습니다 네이버 뉴스>경제에 들어갔을 때, url 창에 나와있던 값은

 

https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=101

 

이 것입니다. 그러나 하단에 있는 2 페이지를 클릭했을 때의 값은

 

https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=101#&date=%2000:00:00&page=2 

 

위와 사뭇 다른 것을 볼 수 있었습니다. 다시 1페이지를 눌러보니

https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=101#&date=%2000:00:00&page=1

 

이런 값이 나오는 것을 확인 할 수 있었습니다.


해당 값에서는 어떤식으로 url이 구성되는 지 분명히 알 수 있었습니다.
아마 들어가는 경로가 달랐기 때문이라고 생각됩니다.


해당 부분을 알아 냈으니 저는 for문을 통해서 다음페이지 url을 계속 받아오게끔 코딩을 할 것입니다

https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=101#&date=%2000:00:00&page=1

맨 뒷부분의 "page=1" 에서 숫자부분이 페이지를 담당하고 있다는 것을 아까의 활동으로 알 수 있었습니다.


그 점을 참고하여 "page=1"에서의 "1" 을 {} 로 바꿉니다. format 함수를 이용할 것이기 때문입니다.


format함수는 문자열 내부에 변수를 넣을 수 있는 함수라고 생각하면 좋을 듯 합니다
문자열 내부에 for 문의 변수를 넣어 다음페이지를 계속 얻어 오는 것입니다


page라는 변수와 +1 모두 int이기 때문에 문자열인 url에 맞게 들어가기 위해 str을 사용하였습니다


그 결과로 나온 코드 값 입니다.

from bs4 import BeautifulSoup

import requests

for page in range(0,10):  
url = "[https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=101#&date=%2000:00:00&page={}" 
req = requests.get(url.format(str(page+1))  

위 코드를 사용하면 네이버 경제부분의 1~10 페이지 소스를 가지고 올 수 있습니다.

 

본인이 원하는 데이터가 있는 페이지에서 위 처럼 코드를 구성하셨다면

다음은 해당 정보를 가지고 원하는 정보를 가져올 차례입니다.!!

 

 

다음 글에서 이어 작성하겠습니다

+ Recent posts