본문 바로가기

기타/python

파이썬 웹 크롤링 예제

728x90

BeautifulSoup은 HTML, XML 문서를 파싱 하기 위한 패키지로 크롤링을 도와줍니다.

파싱이란 문자열을 의미 있는 토큰으로 분해하고 파스 트리를 만드는 것입니다.

HTML, XML 문서를 쉽게 분석할 수 있도록 도와준다고 생각하시면 될 것 같습니다.

크롤링이란 웹페이지를 돌아다니면서 정보를 수집하는 것을 의미합니다.

BeaitifulSoup과 함께 쓰이는 모듈로는 requests가 있습니다.

requests는 html 문서를 가져오도록 요청을 보내는 패키지입니다.

 

아래와 같이 requests.get을 통해 네이버의 html 코드를 가져오고

beautifulsoup를 통해 html 파싱을 진행합니다.

import requests
from bs4 import BeautifulSoup

naver = requests.get("https://www.naver.com/")
soup = BeautifulSoup(naver.content,"html.parser")

print(soup)

 

beautifulsoup을 이용해 파싱 했기 때문에 아래와 같이 html을 탐색할 수 있습니다.

원하는 데이터를 가져올 수 있는 것이지요.

 

print(soup.title)
# 첫번째 span태그에 해당하는 문자열 
print(soup.span.string)
#a태그를 모두 가져와 리스트로 돌려 준다.
print(soup.find_all("a"))
#첫번째 요소만 가져오는 것
print(soup.find("a"))
#클래스 값으로 찾기
print(soup.find_all("div",{"class":"service_area"}))

 

특정 태그 안의 값에 소 텍스트만 가져오고 싶다면 아래와 같이 하면 됩니다.

 

print(soup.div.get_text())

 

 

 

크롤링에서 가장 중요한 것은 위와 같이 도구에 대해 아는 것도 있지만 결국

자신이 가져오고자 하는 데이터를 정확히 가리키는 것입니다.

그러려면 html, xml등에 대한 기본적인 이해가 깔려있어야 하지요.

거의 대부분의 경우 html 코드이니 html에 대해 학습해보시기 바랍니다.

html의 대략적인 구조나 문법은 하루 안에 끝낼 수 있으니 빨리 해보세요 ㅎㅎㅎ

 

추가적으로 결국 가져오는 것은 거의 문자열 데이터입니다.

문자열 데이터를 보다 디테일하게 분석하기 위해서는 정규표현식을 학습하시면 됩니다.

예를 들어 '미국'이라는 단어가 들어간 문자열만 가져온다고 했을 때 기존의 코드로는 너무 복잡해지는데 정규표현식을 사용하면 한두 줄 추가하는 것으로 구현이 가능하니까요.

 

오늘 다룬 내용은 아주 기본적인 내용입니다.

 

bs4, request라는 모듈을 통해 크롤링을 할 수 있다.

중요한 것은 가져오고자 하는 데이터가 어디에 있는지 분석하는 것이다.

도움이 되셨으면 합니다 감사합니다.

728x90