작성
·
25
0
질문 1: 1년치 양이많은 뉴스 크로링 법 알려주세요 ! ㅠ
다음뉴스에서 키워드 하나를 입력하고
그 키워드를 치면 나오는 '1년치' 뉴스를 다 크롤링 하려면 어떻게 해야하나요?
양이 많아서 하나씩 하기엔 불가능인것같아서요 ㅠㅠ
질문 2 : 관련없는 기사 거르기 (내가 정한 특정 키워드를 거르기) 알려주세요 ㅜ
위에 뉴스 데이터를 다 크롤링 한뒤에, 뉴스에서 특정단어를 '거르고' 엑셀에 저장하고싶은데 ,
거르는 코드 script는 어떤거인가요? ㅠㅠ
예: 검색 키워드 : 가스비용 증가
원하는 관련기사 : 가스 비용 관련
그중 관련이 없어 거르기 원하는 키워드 기준 : 고구마 과다섭취는 복통에 가스를 차게한다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
코딩엔젤님, 뉴스 크롤링에 대한 방법을 설명드리도록 하겠습니다.
1년치 뉴스 크롤링을 위해서는 Python의 BeautifulSoup과 requests 라이브러리를 사용하여 뉴스 기사를 수집할 수 있습니다. 크롤링할 때는 상대적으로 많은 요청을 서버에 보내는 것이므로, 웹사이트의 robots.txt를 확인하여 적절한 범위에서 작업을 진행하셔야 합니다. 또한, 뉴스 페이지에 페이지네이션 기능이나 날짜별 필터가 지원되는 경우 이를 활용하여 원하는 기간의 뉴스를 수집할 수 있습니다.
크롤러 개발 환경 설정:
pip install requests beautifulsoup4
뉴스 수집 코드 예제:
def crawl_news(base_url, keyword, start_date, end_date):
url = f”{base_url}/search?q={keyword}&sort=date” # 검색 URL 구성
while start_date <= end_date:
formatted_date = start_date.strftime(‘%Y%m%d’)
response = requests.get(f”{url}&date={formatted_date}“)
if response.status_code == 200:
soup = BeautifulSoup(response.text, ‘html.parser’)
# 기사 내용 추출
articles = soup.findall(‘div’, class=‘article’)
for article in articles:
title = article.find(‘h2’).text
print(title)
start_date += datetime.timedelta(days=1)
crawl_news(’https://news.daum.net’, ‘가스비용 증가’, datetime.date(2023, 1, 1), datetime.date(2023, 12, 31))
“`
뉴스를 크롤링한 후, 특정 키워드를 기준으로 기사를 필터링하여 엑셀 파일로 저장하기 위해서는 pandas와 openpyxl 라이브러리를 사용할 수 있습니다.
def filter_and_save(news_data, filter_keywords):
filtered_data = [news for news in news_data if all(keyword not in news for keyword in filter_keywords)]
df = pd.DataFrame(filtered_data, columns=[‘Title’, ‘Content’])
df.to_excel(‘filtered_news.xlsx’, index=False)
news_data = [
{‘Title’: ‘가스비용 관련 뉴스’, ‘Content’: ‘가스비용이 증가하고 있습니다.’},
{‘Title’: ‘고구마 관련 뉴스’, ‘Content’: ‘고구마 과다섭취는 복통에 가스를 차게 한다.’}
]
filter_keywords = [‘고구마’, ‘복통’]
filter_and_save(news_data, filter_keywords)
“`
위의 코드들은 기본적인 구조만 제공하고 있으며, 실제 작업 시 페이지 구조나 필터링 조건에 맞춰 커스터마이징이 필요합니다. 적절한 크롤링과 필터링을 통해 원하는 결과를 얻으시길 바랍니다. 도움이 필요하시면 언제든지 문의해 주세요.