1. 파이썬 복습문제
강의시간 파이썬, VScode 설치가 잘 안되서 강의영상 돌려가면서 설치완료 했습니다.
말씀대로 설치가 젤 힘드네요.
첫째주 과제 (H01L) | Notion뉴스 크롤링
계속 크롤링 내용이 빈칸으로만 나와서 결국 다른분들이 올린 내용을 GPT에게 참고해서 코드를 만들어 달라고 요청하니 결과가 나오네요
요청내용 : 네이버에서 테슬라뉴스 크롤링
코드
import requests
from trafilatura import fetch_url, extract
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime, timedelta
import re
# 네이버 테슬라 뉴스 페이지 URL
url = 'https://search.naver.com/search.naver?where=news&query=테슬라'
# 페이지 내용을 가져오기
response = requests.get(url)
response.raise_for_status()
# BeautifulSoup으로 HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
# 뉴스 데이터 저장 리스트 초기화
news_data = []
# 현재 시간 가져오기
now = datetime.now()
# 뉴스 기사의 제목, 링크, 날짜 추출
articles = soup.select('div.group_news ul.list_news li')
for article in articles:
title_element = article.select_one('a.news_tit')
date_element = article.select_one('span.info')
if title_element and date_element:
title = title_element.text.strip()
link = title_element['href']
date_text = date_element.text.strip()
# 상대적인 날짜를 절대적인 날짜로 변환
if '시간 전' in date_text:
hours_ago = int(re.search(r'(\d+)시간 전', date_text).group(1))
date = now - timedelta(hours=hours_ago)
elif '일 전' in date_text:
days_ago = int(re.search(r'(\d+)일 전', date_text).group(1))
date = now - timedelta(days=days_ago)
else:
date = now
date = date.strftime('%Y-%m-%d, %H:%M')
# 기사 내용 크롤링
downloaded = fetch_url(link)
if downloaded:
content = extract(downloaded)
else:
content = 'No content found'
news_data.append({'Date': date, 'Title': title, 'Link': link, 'Content': content})
# 데이터를 pandas DataFrame으로 변환
df = pd.DataFrame(news_data, columns=['Date', 'Title', 'Link', 'Content'])
# 현재 시간 가져오기
crawl_time = now.strftime('%Y%m%d_%H%M')
# DataFrame을 CSV 파일로 저장 (현재 작업 디렉토리에 저장)
output_path = f'naver_tesla_news_{crawl_time}.csv'
df.to_csv(output_path, index=False)
print(f"데이터를 {output_path} 파일로 저장했습니다.")
print(df)