1. python-docx
python에서 워드를 활용하기 위해서는 python-docx 라이브러리를 사용할 수 있다. python-docx 설치를 위해 아래 명령어를 실행하면 된다.
pip install python-docx
기본적인 메서드에는 워드 객체를 생성하는 Document()와 제목을 작성하는 add_heading(), 본문을 작성하는 add_paragraph() 등이 있다. 예시 코드는 다음과 같다.
from docx import Document
# 1. 워드 생성
document = Document()
# 2. 워드에 데이터 추가
# level = 제목의 크기 (0 = 가장 크며 아래에 밑줄이 있다. 1~6으로 갈수록 크기가 작아진다.)
document.add_heading('제목', level = 0)
# 3. 문단 추가
# 문단이란 한줄로 이어지는 글을 말한다. 엔터를 치지 않은 상태를 의미한다.
document.add_paragraph('본문 내용')
# 4. 워드 저장
document.save("test.docx")
2. 크롤링 데이터 워드에 기록하기
이전에 뉴스 제목, url, 내용을 크롤링한 데이터를 워드로 아래와 같이 작성하여 저장할 수 있다.
import time
import requests
from bs4 import BeautifulSoup
from docx import Document
response = requests.get("https://search.naver.com/search.naver?ssc=tab.news.all&where=news&sm=tab_jum&query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90")
html = response.text
soup = BeautifulSoup(html, "html.parser")
articles = soup.select("div.info_group")
document = Document()
for index, article in enumerate(articles):
links = article.select("a.info")
if len(links) < 2:
continue
url = links[1].attrs['href']
response = requests.get(url)
'''
네이버가 봇으로 인지하는 경우 response의 결과를 받지 못하고 Connection aborted 오류가 발생한다.
해당 경우 아래 코드 사용한다.
'''
# response = requests.get(url, headers={'User-agent':'Mozila/5.0'})
html = response.text
soup = BeautifulSoup(html, "html.parser")
title = soup.select_one('#title_area').get_text().strip()
contents = soup.select_one('#dic_area').get_text().strip()
document.add_heading(title, level=0)
document.add_paragraph(url)
document.add_paragraph(contents)
# 서버에 부담가지 않도록 하기위해 sleep을 사용한다.
time.sleep(0.5)
document.save("test.docx")
'DB > Crawling' 카테고리의 다른 글
8. 쿠팡 상품 크롤링 (0) | 2024.04.07 |
---|---|
7. 워드 클라우드 (0) | 2024.04.06 |
5. 네이버 뉴스 본문 크롤링 (0) | 2024.04.06 |
4. 셀레니움 기본 개념 (네이버 로그인, 네이버 쇼핑 상품 크롤링) (0) | 2024.04.01 |
3. Openpyxl 기본 개념 (네이버 주식 정보 수집) (0) | 2024.04.01 |