Programming

파이썬 BeautifulSoup로 블로그 제목만 출력하기 (텍스트 마이닝)

김봉철 2021. 11. 6. 19:27

0. BeautifulSoup란?

  HTML 문서를 분석할 수 있는 파이썬 라이브러리이다. 웹사이트는 HTML이란 언어로 이루어진 문서이고, 웹 브라우저는 이 문서의 뷰어라고 할 수 있다. 

 

1. 설치법

 추가 예정

 

 

2. 사용법

 A) 파이썬 requests 라이브러리의 .get 함수를 이용해 웹사이트에 요청을 보낸다. 

 B) .text 함수를 이용해 웹사이트의 HTML을 추출한다. (string)

 C) B에서 받아온 소스를 beautifulsoup가 처리할 수 있는 형식으로 변환한다.

 D) .select 함수를 이용해 필요한 코드를 추출한다. (list)

 E) .string 함수를 이용해 코드에서 불필요한 태그를 제거한다.

 

 예시)

코드

import requests as re
 #requests 라이브러리를 re로 호출
from bs4 import BeautifulSoup as bs
 #bs4에서 Beautifulsoup만 bs로 호출

url = "https://bongchuls.tistory.com"
 #html을 추출할 url지정
 
req = re.get(url)
 #A) url에 요청보내기.
 #type(req) >>>  <class 'requests.models.Response'>

txt = req.text
 #B) 전체 html 추출.
 #type(txt) >>>  <class 'string'>
 
html = bs(txt, 'html.parser')
 #C) Beautifulsoup에서 처리할 수 있는 형식으로 변환.
 #type(html) >>>  <class 'bs4.BeautifulSoup'>
 
tag = html.select('.title')
 #D) 전체에서 title 클래스를 가진 코드만 추출.
 #type(tag) >>>  <class 'bs4.element.ResultSet'>
 #인데, List 자료형이다.
 
for n in range(len(tag)):
    print(tag[n].string)
 #리스트 tag의 크기만큼 반복.
     #E) 불필요한 태그는 제거하고 필요한 텍스트만 추출.

 

출력

파이썬 단어 빈도수 카운트 알고리즘 (자세한 설명)
오목 프로그램 (미완)
Codeup/ 기초 100제/ 6088/ 주사위 2개 던지기/ 해설
C언어와 Python의 '변수 선언' 시 차이점
시작

(2021-11-06. 19:15 (GMT +9) 기준)

 

 

잡담

 - 텍스트 마이닝, 데이터 마이닝, 웹 스크래핑, 웹 크롤링 등 부르는 이름이 많다. 내가 하는 이 작업을 정확히 뭐라고 부르는 지 모르겠다. 

 - .select 함수의 설명이 부족하다. 나중에 내용을 추가하던가, 게시글을 올리던가 할 예정이다. html의 구조까지 설명해야 할텐데 내용이 너무 많을 것 같아 걱정이다.

 - 항상 type() 주석이 많다. 나는 자료가 어떻게 처리되고, 어떻게 변하는지 알고 있어야 확실히 이해한 느낌이다. 자료형때문에 에러나는 경우도 많고... 읽는 입장에서 너무 거추장스럽지 않을까.. 

 - 아직 게시물의 퀄리티나 정확성도 많이 부족한 것 같다. 형식도 들쑥날쑥이고... 그래도 내가 공부하며 헷갈렸던 부분을 정확히 짚고 있으니, 내 글이 도움이 됐으면 좋겠다.