이번 포스팅에서는 BeautifulSoup를 통해 제 블로그를 스크래핑 후 wordcloud와 konlpy를 통해 형태소를 분석 후 텍스트 구름을 만들어보려고 합니다!
길게 말하면 재미없으니, 바로 설명과 코드를 보시죠!
WordCloud?
wordcloud는 파이썬의 텍스트 클라우드 라이브러리로, 말 그대로 텍스트 구름을 그릴 수 있는 시각화 라이브러리입니다!
konlpy
konlpy는 한국어 형태소 분석기 라이브러리로, 문장 내에서 원하는 명사, 부사 등과 같은 요소를 뽑아내는 데 사용하는 라이브러리입니다!
설치
pip install wordcloud
pip install konlpy
실습 코드
# 과도한 요청을 방지하기 위해 0.5초마다 요청 보내기!
import time
from bs4 import BeautifulSoup
import requests
articles = []
for i in range(1, 6):
res = requests.get("https://jh-codingdiary.tistory.com/?page={}".format(i))
soup = BeautifulSoup(res.text, "html.parser")
parsed_datas = soup.find_all("a", class_="link-article")
for data in parsed_datas:
articles.append(data.text.strip())
time.sleep(0.5)
# 시각화에 쓰이는 라이브러리
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 횟수를 기반으로 딕셔너리 생성
from collections import Counter
# 문장에서 명사를 추출하는 형태소 분석 라이브러리
from konlpy.tag import Hannanum
hannanum = Hannanum()
words = []
for article in articles:
# .nouns()를 통해 명사 추출!
nouns = hannanum.nouns(articles)
words += nouns
print(len(words)) # 1361개의 명사가 추출된 것을 확인!
# counter를 통해 각 명사의 개수 세기!
counter = Counter(words)
# WordCloud를 통한 시각화!
wordcloud = WordCloud(
font_path="/Library/Fonts/Arial Unicode.ttf",
background_color="white",
width=2000,
height=2000,
)
img = wordcloud.generate_from_frequencies(counter)
plt.imshow(img)
결과
앞선 코드를 통해 텍스트 구름을 만들 수 있었습니다!
아쉬운 점은 저 또한 아직 스크래핑에 익숙하지 않아, 제목만 끌고오는 것이 아닌 요약문을 끌고오게 되어 아쉬움이 남습니다!
꾸준히 공부해서 타겟 요소만 가져올 수 있게되는 그 날까지, 열심히 해보겠습니다!
'크롤링, 스크래핑, 시각화 > 시각화' 카테고리의 다른 글
[시각화] 스크래핑을 통한 시각화 (0) | 2024.10.07 |
---|---|
[데이터 시각화] Seaborn (0) | 2024.10.07 |