Story of CowHacker

뉴스 기사 크롤링 및 PDF로 저장 하기 본문

공부/꿀팁

뉴스 기사 크롤링 및 PDF로 저장 하기

Cow_Hacker 2022. 1. 15. 23:33
728x90

안녕하세요 CowHacker입니다.





오늘은 뉴스 기사 사이트에서 간단히 제목을 본 후 관심이 가는 기사만 선택해 그 기사 HTML을 PDF로 자동 저장시키는 것을 해보겠다.








https://www.boannews.com/media/o_list.asp

 

보안뉴스_뉴스

 

www.boannews.com

저기 밑 줄 친 부분이 기사의 제목들이다.






위 코드를 보면 사이트의 url를 통해 해당 기사 제목만 가져오는 것을 볼 수 있다.







실행을 하면 위와 같은 결과가 나온다.










그다음 해당 번호를 입력받아 준다.









나는 5번째 MS 관련 기사를 PDF로 저장하고 싶었다.




조금 기다리면 'PDF 저장 완료'라고 뜬다.







내가 저장 경로로 설정한 곳에 가면 떡하니 기사 제목으로 PDF가 만들어져 있다.












열어 보면 PDF로 정상 저장이 된 걸 볼 수 있다.









import requests # HTTP 요청처리를 위해 사용하는 모듈이다. 
from bs4 import BeautifulSoup # HTML 및 XML 파일에서 원하는 데이터를 손쉽게 Parsing 할 수 있는 Python 라이브러리다. 
import pdfkit # HTML을 PDF로 변환 시켜주는 라이브러리다. 
import os # 시스템 파일에 접근할수 있는 라이브러리다. 

#============================================================#
#============================================================# 

# # 보안뉴스 사이트내 기사 제목 추출 구간이다. # 
url = 'https://www.boannews.com/media/o_list.asp' # 크롤링할 주소를 입력하는 구간이다. 
response = requests.get(url) # HTTP 요청처리를 GET방식으로 response라는 변수한테 주는 구간이다. 
html = response.text # 응답을 읽고 텍스트를 반환하는 구간이다. 
soup = BeautifulSoup(html, 'html.parser') # 해당 값을 parser하는 구간이다. 
value = soup.find_all('span',class_="news_txt") # 특정 값을 추출하는 구간이다. 
count = 1 
titlelist = [] 
for _ in value: # 기사 제목만 추출 하는 구간이다. 
    vlaue2 = _.get_text() 
    print(count,end=". ") 
    print(vlaue2,end="\n") 
    titlelist.append(vlaue2) # 기사 제목을 추출해 따로 저장해두는 구간이다. 
    count += 1 

#============================================================# 
#============================================================# 

# 관심 기사를 선택 하는 구간이다 # 
number = int(input("관심 기사의 번호를 입력하세요 : ")) 
searchvalue = titlelist[number-1] # 관심 기사를, 제목을 저장해둔 곳에서 가져오는 구간이다.

#============================================================# 
#============================================================#

# 선택한 기사를 크롤링 하는 구간이다. # 
search = "https://www.boannews.com/media/view.asp?idx=103990&kind=1&search=title&find=" + searchvalue 
response2 = requests.get(search) # HTTP 요청처리를 GET방식으로 response라는 변수한테 주는 구간이다. 
html2 = response2.text # 응답을 읽고 텍스트를 반환하는 구간이다. 
soup2 = BeautifulSoup(html2, 'html.parser') # 해당 값을 parser하는 구간이다. 
value3 = soup2.find('div',id="news_content") # 특정 값을 추출하는 구간이다. 

#============================================================# 
#============================================================# 

# 선택한 기사 내용이 담긴 홈페이지를 PDF 파일로 변환 하는 구간이다.
os.chdir(r'H:\보안뉴스') # PDF를 저장할 위치를 정하는 구간이다. 
options = {'quiet': ''} # 이 옵션을 통해 실행시 pdf 미리보기가 뜨지 않는다. 
config = pdfkit.configuration(wkhtmltopdf=r'H:\wkhtmltopdf\bin\wkhtmltopdf.exe') # wkhtmltopdf 프로그램을 사용하려는 구간이다. 
pdfkit.from_url(search, searchvalue+"."+"pdf",configuration=config) # 저장할 파일 제목을 정하는 구간이다. print("PDF 저장 완료")





스 홈페이지에서
르륵 마우스 휠을 내려 보게 되는
사들 중 관심
가 있는 녀석만

롤링해 가져
(올) 수 있도록 코
(딩) 해봤다.

 

728x90

'공부 > 꿀팁' 카테고리의 다른 글

Galaxy Watch 페이스 꾸미기 (워치4)  (4) 2022.02.05
Kali 리눅스 터미널 꿀팁  (2) 2022.01.31
NFT 판매하기 1편  (2) 2021.11.24
NFT 만들기  (2) 2021.11.23
로또 번호 생성기  (1) 2021.11.18
Comments