혼자한다.
아니다. 지피티와 함께 한다.
네이버 뉴스 카테고리에는 오피니언이 있고, 그 밑에 칼럼 카테고리가 따로 있다.
이 칼럼카데고리의 칼럼에 대한 크롤링 코드다
다른 크롤링에 비해서 별다를 건 없다.
한페이지에 다 보여지지 않으니, 셀레니움 써서 스크롤 몇번 해야 한다.
[아래는 코드 전문]
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
from selenium.common.exceptions import NoSuchWindowException
# Selenium 웹 드라이버를 시작합니다.
driver = webdriver.Chrome() # Chrome 드라이버를 사용합니다. Chrome 버전에 맞는 드라이버가 필요합니다.
# 엑셀 파일 생성을 위한 데이터 프레임 초기화
df = pd.DataFrame(columns=['날짜', '언론사', '제목', '링크', '미리보기'])
try:
# 네이버 칼럼 메인 페이지 URL
url = "https://news.naver.com/opinion/column"
# 페이지에 접속합니다.
driver.get(url)
# 페이지 스크롤을 화면 끝까지 내립니다.
for _ in range(10): # 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('li', class_='opinion_column_item')
# 결과 출력 및 엑셀 파일에 저장
for news in news_list:
title = news.select_one('a > div.content_area > strong')
if title:
title = title.text.strip()
link = news.select_one('a')['href']
description = news.select_one('.content_area > p.description')
if description:
description = description.text.strip()
press_name = news.select_one('div.sub_info > span.sub_item:nth-child(1)')
if press_name:
press_name = press_name.text.strip()
date = news.select_one('div.sub_info > span.sub_item:nth-child(2)')
if date:
date = date.text.strip()
# 결과 출력
print("날짜:", date)
print("언론사:", press_name)
print("제목:", title)
print("링크:", link)
print("미리보기:", description)
print()
# 엑셀 파일에 저장
df = df.append({'언론사': press_name, '제목': title, '미리보기' :description, '링크': link, '날짜': date}, ignore_index=True)
except NoSuchWindowException:
print("NoSuchWindowException: WebDriver가 이미 닫힌 창을 타겟으로 합니다. 프로그램이 종료됩니다.")
# 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.08 |
[혼자하는 파이썬] 중기부 보도자료 파일 다운로드 크롤링 (0) | 2024.03.07 |
[혼자하는 파이썬] 금융감독원 보도자료 목록 크롤링 (0) | 2024.03.06 |