파이썬 강의/requests

파이썬 BeautifulSoup 1. 페이지 크롤링

마리사라 2021. 1. 24. 14:54
반응형

파이썬 BeautifulSoup 1번째 강의는 페이지 크롤링입니다.


0. 기초 설명

저번 BeautifulSoup의 설명에서 크롤링이 무엇인지는 알아보았습니다. 이번에는 BeautifulSoup에서의 크롤링이 무엇인지 알아보겠습니다.

 

requests모듈에서도 웹 페이지의 html정보는 받아올 수 있음을 알고 있습니다. 잘 모르시는 분은 이전 강의를 참조하시기 바랍니다.

2021/01/04 - [파이썬/requests] - 파이썬 requests 2. text와 content

 

파이썬 requests 2. text와 content

파이썬 requests 2번째 강의는 text와 content입니다. 0. 기초 설명 여러분들이 사용하고 계신 인터넷은 모두 html(HyperText Mark-up Language)로 되어 있습니다. 보기 좋게 되어있는 네이버의 메인화면도 위..

marisara.tistory.com

해당 강의에서도 requests의 text나 content보다 BeautifulSoup를 더 많이 사용한다고 언급했습니다. 그 이유가 바로 크롤링입니다.

 

(1) 크롤링

크롤링은 웹 페이지에서 데이터를 추출하는 작업입니다. 하지만 requests에서 받아온 정보인 text나 content는 단순한 문자열이나 바이트 단위의 데이터에 불과합니다.

requests의 text와 content의 타입

이것을 사용자가 이용하려면 find로 필요한 부분을 하나하나 찾으면서 사용해야 할 것입니다.

 

이러한 단점을 해결해주는 것이 바로 BeautifulSoup입니다. BeautifulSoup에서는 입력받은 바이트 단위의 정보를 특정한 규칙에 의거해서 해석합니다. 그것을 HTML Parse라고 하며, 이러한 작업을 해주는 프로그램을 HTML Parser라고 합니다. BeautifulSoup는 해당 규칙에 의거해서 requests에서 받아온 정보를 사용자가 보기 쉽게 변경해 줍니다. 이때 반드시 HTML Parser만 사용하는 것이 아니라, LXML Parser를 사용할 수 있지만, BeautifulSoup에서는 HTML Parser를 기본으로 제공하고, 성능도 나쁘지 않은 편이라 기본적인 HTML Parser를 사용하는 것을 추천드립니다.


1. 실전 코드

실제로 전달받은 데이터를 BeautifulSoup를 통해 사용하기 편하게 바꿔보도록 하겠습니다.

 

from bs4 import BeautifulSoup

설치할 때에도 말씀드렸다시피, BeautifulSoup는 bs4에 속한 모듈입니다. 따라서 bs4에 있는 BeautifulSoup를 import 합니다. 이때 대소문자를 반드시 구분해 주셔야 합니다.

 

import requests

BeautifulSoup는 입력받은 정보를 보기 쉽게 변형시켜주는 모듈이므로 html정보를 따로 입력받아야 합니다. 그렇기 때문에 requests와 BeautifulSoup는 함께 사용됩니다.

 

url = 'http://www.daum.net'
query = requests.get(url=url)

이번 시간에는 daum의 정보를 얻어와 보겠습니다. requests의 get을 통해 daum의 메인 페이지의 정보를 받아옵니다.

 

soup = BeautifulSoup(query.content, "html.parser")

이제 BeautifulSoup를 통해 정보를 가공합니다. 이때 첫 번째 파라미터로 가공할 원본 데이터를, 두 번째 파라미터로 가공 방식을 설정합니다. 가공방식은 반드시 따옴표로 묶여야 합니다.

 

이제 query의 text와 BeautifulSoup로 가공된 soup를 비교해 보겠습니다.

print(query.text)
print(soup)

언뜻 보면 두 결괏값이 차이가 없어 보입니다.

두가지의 타입을 비교

하지만 두 가지의 타입을 비교해 보면 text는 문자열, soup는 BeautifulSoup라는 타입으로 지정되어 있는 것을 볼 수 있습니다. 이때 soup는 BeautifulSoup의 여러 함수를 통해 가공하고 원하는 데이터를 뽑아낼 수 있도록 되어있는 것을 볼 수 있습니다.


2. 마치며

이번 시간에는 BeautifulSoup의 가장 기본적인 코드를 알아보았습니다. 다음 시간부터는 데이터를 가공하고 추출하는 방법을 알아보겠습니다.

반응형