혼자한다.
아니다. 지피티와 함께 한다.
네이버 뉴스 검색을 위한 파이썬 코드
1. 검색어를 입력할 수 있다.(검색어 종료를 위해서는 end를 입력)
2. 검색 기간을 정할 수 있다. (아래 코드는 7일로 설정)
결과는 다음과 같이 나온다.
키워드를 입력하세요. 입력이 끝나면 'end'를 입력하세요. 키워드 입력: 홍길동 키워드 입력: end 키워드: 홍길동 언론사: OO일보 제목: 파이선 코드 검색..... 링크: https://www. 날짜: 5분 전 . . . . 검색 결과가 엑셀 파일로 저장되었습니다: 2024-03-08_10-05-50_주요뉴스.xlsx |
<아래는 코드 전문>
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import time
import pandas as pd
from datetime import datetime, timedelta
from selenium.common.exceptions import NoSuchWindowException
from urllib.parse import quote
# Selenium 웹 드라이버를 시작합니다.
driver = webdriver.Chrome() # Chrome 드라이버를 사용합니다. Chrome 버전에 맞는 드라이버가 필요합니다.
time.sleep(5) # 페이지가 완전히 로드될 때까지 대기합니다.
html = driver.page_source
# 사용자로부터 키워드 입력 받기
print("키워드를 입력하세요. 입력이 끝나면 'end'를 입력하세요.")
keywords = []
while True:
keyword = input("키워드 입력: ").strip()
if keyword.lower() == 'end':
break
keywords.append(keyword)
# 엑셀 파일 생성을 위한 데이터 프레임 초기화
df = pd.DataFrame(columns=['키워드', '언론사', '제목', '링크', '날짜'])
# 일주일 전 날짜 구하기
end_date = datetime.now()
start_date = end_date - timedelta(days=7)
# 각 키워드에 대해 검색 및 데이터 수집
for keyword in keywords:
try:
# 네이버 뉴스 검색 URL
encoded_keyword = quote(keyword)
url = f"https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query=%22{encoded_keyword}%22&oquery=[keyword]&tqi=iOJItdqVOsVssKuUPU8ssssstzN-467977&nso=so%3Add%2Cp%3A1w&de={start_date.strftime('%Y.%m.%d')}&ds={end_date.strftime('%Y.%m.%d')}&mynews=0&office_category=0&office_section_code=0&office_type=0&pd=1&photo=0&service_area=0&sort=1"
# 페이지에 접속합니다.
driver.get(url)
# 페이지 스크롤을 화면 끝까지 내립니다.
for _ in range(2): # 10번 스크롤합니다.
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1) # 스크롤 간 시간 간격을 줍니다.
# 페이지 소스를 가져옵니다.
html = driver.page_source
# BeautifulSoup을 사용하여 파싱합니다.
soup = BeautifulSoup(html, 'html.parser')
# 뉴스 정보 찾기
news_list = soup.find_all('div', class_='news_area')
# 결과 출력 및 엑셀 파일에 저장
for news in news_list:
title = news.find('a', class_='news_tit').text.strip()
link = news.find('a', class_='news_tit')['href']
press_name = news.find('a', class_='info press').text.strip()
date = news.find('span', class_='info').text.strip()
# 결과 출력
print("키워드:", keyword)
print("언론사:", press_name)
print("제목:", title)
print("링크:", link)
print("날짜:", date)
print()
# 엑셀 파일에 저장
df = df.append({'키워드': keyword, '언론사': press_name, '제목': title, '링크': link, '날짜': date}, ignore_index=True)
except NoSuchWindowException:
print("NoSuchWindowException: WebDriver가 이미 닫힌 창을 타겟으로 합니다. 프로그램이 종료됩니다.")
break
# Selenium 드라이버를 종료합니다.
driver.quit()
# 현재 날짜 및 시간을 가져옵니다.
current_date = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
# 엑셀 파일로 저장합니다.
file_name = f"{current_date}_주요뉴스.xlsx"
df.to_excel(file_name, index=False)
print("검색 결과가 엑셀 파일로 저장되었습니다:", file_name)
'python' 카테고리의 다른 글
[혼자하는 파이썬] 파이썬으로 무료 쇼츠 만들기 (1) | 2024.03.29 |
---|---|
[혼자하는 파이썬] 파이썬으로 mp3 음원 만들기 (1) | 2024.03.29 |
[혼자하는 파이썬] 중기부 보도자료 파일 다운로드 크롤링 (0) | 2024.03.07 |
[혼자하는 파이썬] 금융감독원 보도자료 목록 크롤링 (0) | 2024.03.06 |
[혼자하는 파이썬] 네이버 뉴스 칼럼 카테고리 크롤링 코드 (0) | 2024.03.05 |