2023. 3. 26. 23:58ㆍIT
아래 그림과 같이 다음에서 '은행'이라는 키워드로 뉴스 검색을 한 화면을 크롤링 하는 코드에 대한 내용이다. 검색한 키워드 '뉴스'에 해당하는 뉴스를 크롤링하여 제목과 기사의 url을 출력하도록 한다.
F12 또는 메뉴에서 개발자 도구를 선택하면 위의 화면을 볼 수 있다.
그리고나서 왼쪽의 아이콘을 선택한 후에 내가 보고자 하는 부분을 좌측 웹 페이지 상에 마우스를 위치해 보면 된다. 처음의 그림에서 얘기하자면 하나의 뉴스 기사를 선택하면 우측에 html이 하일라이트가 된다. 첫 그램에서 보면 뉴스에 해당하는 부분은
<div class="wrap_content">
를 볼 수 있다.
여기에 해당하는 다음의 전체 코드를 보면 이해가 쉬울 것 같다. 다음의 코드는 위의 주소에서 기사 제목과 기사가 연결된 곳의 url을 출력하는 소스이다.
from bs4 import BeautifulSoup
import requests
# 뉴스 중에 '은행'이 들어간 뉴스 검색을 한 url
url = "https://search.daum.net/search?nil_suggest=btn&w=news&DA=SBC&q=%EC%9D%80%ED%96%89"
html = requests.get(url).text
soup = BeautifulSoup(html, "html.parser")
links = soup.find_all("div", {"class":"wrap_cont"})
for link in links:
title = link.find('a').text
addr = link.find('a')["href"]
print(title, ":", addr)
소스코드의 앞 부분은 당연히 web 연결을 하고, BeautifulSoup를 이용해서 우리가 이해할 수 있는 html 코드를 파싱하는 단계이다. 다음의 코드는 전체 html에서 <div class="wrap_cont">와 </div>사이에 있는 모든 정보를 links에 저장하는 코드이다. 리스트에 저장이 된다. 기본적으로 다음에서는 10개씩 리스트를 보여주므로 10개가 저장이 되어 있을 것이다.
links = soup.find_all("div", {"class":"wrap_cont"})
다음의 for문에서는 10개의 리스트를 돌면서 그 안에서 <a 로 시작하는 것들의 text를 추출하고 <a 다음에 href로 시작하는 정보를 가져오라는 코드이다. 아주 간단한 코드이다.
만일 추가 코딩을 이어간다면 addr이 하나의 url이므로 request를 이용해서 이동을 하고 BeautifulSoup를 이용해서 파싱을 해서 find_all과 find를 이용해서 기사 정보를 얻어 올 수 있을 것이다. 다만, 뉴스가 들어 있는 url에는 하나의 뉴스 사이트만 있는 것이 아니고 다양한 신문사의 기사가 있을 것이므로, 해당 뉴스 사이트에 따라서 크롤링을 하는 코드를 만들어 줘야 할 것이다. 그래서 난 chatGPT를 이용해 뉴스의 내용을 요약하는 방법을 사용하려고 한다.
'IT' 카테고리의 다른 글
AI 모델 생성 - Stable Diffusion (0) | 2023.03.30 |
---|---|
Stable Diffusion (0) | 2023.03.27 |
[Python] ChatGPT (0) | 2023.03.26 |
[Python] eMail 보내기 (0) | 2023.03.26 |
[Python] Google News Scrawling - GoogleNews (0) | 2023.03.26 |