본문 바로가기

개발일지_파이썬for금융인

실전 - 뉴스를 스크래핑 해 파일로 저장하기.

이전에 만든 뉴스 스크래핑하기 작성한 거 있지?

거기에 필요한 것들을 넣는 것이다.

openpyxl 기본코드의, 워크북 불러와서 저장하는 것을 넣자.

뭔가 작업하고, 그것을 샘플파일로 만드는 거야.

그런데 저장하는 이름을 키워드로 저장되게 하면 좋겠지.

f랑 {중괄호} 사용

그럼 이제 남은 문제는 print(a.text, a['href'])를 어떻게 처리하느냐다.

우린 뉴스기사의 제목텍스트와 링크를, 엑셀파일의 행에 아래로 아래로 쌓을 것이다.

 

일단 저걸 리스트에 넣고 row라 한다.

row = [a.text, a['href']]

이 row를 sheet에 .append 해가지고 붙여준다.

sheet.append(row)

 

아래는 완성코드. (ctrl+enter로 실행시켜줌)

import requests
from bs4 import BeautifulSoup

from openpyxl import Workbook

def get_news(keyword):
  wb= Workbook()
  sheet = wb.active

  headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
  data = requests.get(f'https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query={keyword}',headers=headers)

  soup = BeautifulSoup(data.text, 'html.parser')

  lis = soup.select('#main_pack > section > div > div.group_news > ul > li')

  for li in lis:
    a= li.select_one('a.news_tit')
    row = [a.text, a['href']]
    sheet.append(row)

  wb.save(f"{keyword}.xlsx")
  wb.close()

 

그럼 이제 우리가 만든 get_news함수를 써보자.

새 코드 만들고.

ctrl+enter 실행하고, 폴더 새로고침 해주면

 

파일 더블클릭으로 열어보면, 짜잔!

---------------------------------------------------------

삼성전자뿐만이 아닌, 여러 키워드로 저장하고 싶다면?

----------------------------------------------------------

특정 폴더 안에 저장되게 하려면?

wb.save(f"news/{keyword}.xlsx")

슬래시/를 넣어준다.

news 폴더 안에 저장하라는 의미.

※ Colab에 새폴더 만들어서 news로 이름 정해줘야 함.