뉴스 스크랩은 약 2년 전에 추석특집 무료 특강에도 나왔던 것 같은데 자꾸 잊어버리거나 응용 아이디어가 모자라서 발전을 못하고 있는 느낌적 느낌인데(...)
수많은 파이썬 데이터분석 관련 무료 강의를 듣고 와서도 빅데이터분석기사는 파이썬 코드 외울 자신이 없어서 R로 다시 공부해서 합격하고 돌아와서
다시 처음부터 공부하고 있다 ㅋㅋㅋ
1주차에 배운 것들을 요약한 코드
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
from datetime import datetime
wb0 = openpyxl.load_workbook('관리종목.xlsx') # 50개의 기업 이름과 종목코드가 정리된 엑셀 파일
sheet = wb0['종목'] # 해당 내용이 저장된 시트를 불러온다
keywords=[]
for ele in range(1,51): # A1은 제목이니까 A2부터 A51까지만 불러옴
name = 'A' + str(ele+1)
no = 'B'+str(ele+1)
filename=sheet[name].value
keywords.append(filename) #51개의 기업 이름들을 하나의 리스트에 저장
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'}
def nvnews(keyword): # 주어진 단어의 네이버 상위 뉴스를 스크랩 해오는 함수
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')
wb= Workbook()
sheet = wb.active
u = soup.select("#main_pack > section > div > div.group_news > ul > li") # 검색결과에서 특정 셀렉터 목록을 가져옴
for ele in u:
row = [ele.select_one('a.news_tit').text,ele.select_one('a.news_tit')['href']] # 엑셀의 한 줄이 해당 기사 제목과 신문기사 주소로 구성됨
sheet.append(row) # 그 줄을 엑셀 시트에 붙임
today = datetime.today().strftime("%Y-%m-%d") # 파일명에 스크랩한 날짜를 추가함
wb.save(f"clip/{today}_{keyword}.xlsx") # 파일명이 오늘날짜_키워드 로 구성됨
wb.close() #엑셀 파일 제작 종료
for ele in keywords:
nvnews(ele) # 위와 같은 특정 키워드로 기사를 검색하는 과정을 처음에 만든 50개 기업 이름으로 반복 작업함
가장 헤맸던 것:
이렇게 생긴 파일인 줄 모르고 A2, B2 ('삼성전자', '005930')이 아닌 A1, B1 ('종목명', '종목코드')부터 찾으려고 하니까 당연히 에러가 남 ㅋㅋㅋ