본문 바로가기
Python

Python - crawling pattern

by DGK 2021. 10. 28.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

크롤링 코드 패턴(Python)

크롤링이란, 웹 사이트에서 원하는 데이터를 자동으로 추출하는 기능이다.

 

크롤링 코드 패턴 예시

import requests
from bs4 import BeautifulSoup

res = requests.get('http://v.media.daum.net/v/20170615203441266')
soup = BeautifulSoup(res.content, 'html.parser')
mydata = soup.find('title')

print(mydata.get_text())

# 결과 : 잔금대출에도 DTI 규제 적용 검토

 

 

크롤링 코드 패턴 분석

import requests

from bs4 import BeautifulSoup

 

  • 라이브러리 임포트(라이브러리 가져오기)

requests는 웹 페이지를 가져오는 라이브러리이고, bs4(BeautifulSoup version 4)는 웹 페이지를 분석(크롤링)하는

라이브러리이다.

 

위의 예시코드는 requests 라이브러리와 bs4 라이브러리를 가져와서, BeautifulSoup 클래스를 사용하겠다는

의미이다. [단,여기서 BeautifulSoup는 첫 글자가 대문자이므로 클래스이다.(메소드x)]

 

res = requests.get('http://v.media.daum.net/v/20170615203441266')

print(res.content)

 

  • 웹 페이지 가져오기

requests 라이브러리의 get() 함수를 통해 사용자가 원하는 웹페이지를 가져올 수 있다.

여기서 get() 함수는 인자로 받은 웹페이지에서 HTML 파일을 다운받아 온 후에, 변수 res에 할당하고 있다.

이렇게 다운 받아온 HTML 파일을 print() 함수를 사용하여 출력할 수 있다.

 

soup = BeautifulSoup(res.content, 'html.parser')

print(soup)	# 분석된 데이터를 출력할 수 있음

 

  • 웹 페이지 파싱(분석)하기

파싱(parsing)이란, 문자열의 의미를 분석하는 것이다.

즉, 파싱(parsing)은 웹 페이지에서 다운 받아온 HTML 파일의 구조(코드)를 분석하는 것을 의미한다.

이렇게 HTML 파일의 구조를 분석(파싱)하는데 필요한 라이브러리가 bs4 라이브러리이다.

(bs4 라이브러리의 BeautifulSoup 클래스 활용하여 분석)

 

위의 예시코드는 res.content의 코드(HTML 파일의 코드)를 분석하여 그 결과를 변수 soup에 넣은 것이다.

(parser에도 여러 종류가 있지만, html.parser를 주로 사용)

 

print(soup.find('h3'))
print(soup.find('title'))

# 결과 : 
# <h3 class="tit_view" data-translation="true">잔금대출에도 DTI 규제 적용 검토</h3>
# <title>잔금대출에도 DTI 규제 적용 검토</title>

 

  • 필요한 데이터 추출하기(핵심)

HTML 파일에서 추출하고자 하는 부분을 find() 함수의 인자로 넣어주면 된다.

이 경우, HTML 파일의 구조(코드)에 대해서 알아야한다.(HTML 관련 지식 필요)

 

mydata = soup.find('title')

print(mydata.get_text())

# 결과 : 잔금대출에도 DTI 규제 적용 검토

 

  • 추출한 데이터 활용하기

get_text() 함수를 통해 HTML 코드는 제거하고, 원하는 핵심 데이터만을 가져올 수 있다.

 

'Python' 카테고리의 다른 글

Python - 크롤링 기술 팁  (0) 2021.10.29
Python - HTML·CSS 이해와 크롤링  (0) 2021.10.28
Python - 기본 문법(추가내용)  (0) 2021.10.21
Python - File Write  (0) 2021.10.20
Python - External functions  (0) 2021.10.18

댓글