상세 컨텐츠

본문 제목

파이썬 ChatGPT 로 네이버 뉴스 카테고리 웹 크롤링 스크래핑 개발

ChatGPT 와 파이썬

by 마리우치 2023. 5. 13. 17:55

본문

반응형

ChatGPT 로 파이썬 배우기 

ChatGPT (챗GPT) 를 이용하여, 파이썬으로 프로그램 개발을 시작합니다.  주로 웹 페이지 스크래핑을 통해서 파이썬을 학습해보려고 하는 데, ChatGPT 가 제공하는 코드를 기반으로 개발을 하더라도, 약간의 파이썬 학습이 되어 있어야 합니다. 파이썬에서 웹 스크래핑을 하려면, requests와 BeautifulSoup 라이브러리를 사용하면 됩니다. requests는 HTTP 요청을 보내고 응답을 받아오는 기능을 제공하며, BeautifulSoup는 HTML 코드를 파싱하여 원하는 데이터를 추출할 수 있는 기능을 제공합니다. 추출한 데이터를 적절하게 가공하여 사용할 수 있습니다. 다만 스크래핑할 때에는 해당 사이트의 이용 약관을 확인하고, 합법적인 방법으로 스크래핑을 수행해야 하며, 코드를 작성할 때에는 사이트의 구조나 HTML 코드가 변경될 가능성이 있으므로 항상 잘 수행이 되지 않고, 웹 사이트의 변경에 따라서 유지보수를 해야할 수 있습니다. 아래와 같이 ChatGPT 가 제공한 코드를 활용해서, 네이버 뉴스 메인 페이지의 뉴스 카테고리를 웹 스크래핑 해보겠습니다. 

웹 크롤링과 스크래핑의 차이점

웹 크롤링과 스크래핑은 모두 웹 페이지에서 데이터를 추출하는 기술이지만, 그 목적과 방식이 다르다. 웹 크롤링은 여러 웹 페이지를 자동으로 탐색하여 그 안에 있는 링크를 따라가며 데이터를 수집하는 과정입니다. 크롤링 봇은 여러 페이지를 자동으로 방문하면서 웹 페이지의 구조와 데이터를 수집하고, 그 데이터를 데이터베이스에 저장하거나 분석하는 등의 용도로 사용되고, 반면 스크래핑은 특정 웹 페이지에서 필요한 데이터를 추출하는 기술로, 웹 페이지의 HTML 코드를 분석하여 필요한 데이터를 추출하는 과정입니다. 스크래핑은 웹 크롤링의 일부로 볼 수 있으며, 크롤링 봇이 자동으로 탐색하는 과정에서 원하는 데이터를 찾아서 추출하는 과정이 포함됩니다. 두 기술 모두 웹 상의 데이터를 수집하는 기술이지만, 크롤링은 데이터베이스를 구축하거나 검색 엔진에서 사용하는 등 대규모 데이터를 수집하는 용도로 사용되고, 스크래핑은 특정 웹 페이지에서 필요한 정보를 추출하는 용도로 사용됩니다.  

네이버 뉴스의 카테고리를 스크래핑하기  

네이버 뉴스의 언론사별, 정치, 경제, 사회, 생활/문화, IT/과학, 세계 ... 등의 카테고리를 가져와 보겠습니다.  아래 이미지의 빨간색으로 된 부분의 텍스트와 링크(웹 주소)를 가져와서 출력하도록 하겠습니다.  html 소스 (또는 페이지 원본) 보기를 하면, 카테고리 부분은 아래와 같은 html 로 구성된 것을 확인할 수 있습니다. 네이버 뉴스의 모든 링크를 가져오는 것이 아니고, 카테고리 부분만 가져올 것이므로, 특정한 특정한 class 안에 들어 있는 link 만 가져와야 합니다.  그래서 아래와 같이 ChatGPT 에게 추가로 질문을 합니다.  

 

네이버 뉴스 메인 페이지의 뉴스 카테고리 캡쳐

 


네이버 뉴스의 html 중 카테고리에 해당하는 부분 

<li class="Nlist_item is_active"><a href=" https://news.naver.com/?viewType=pc " class="Nitem_link" role="menuitem" aria-selected="true" onclick="nclk(event,'lnb.pcmedia','','');"><span class="Nitem_link_menu">언론사별</span></a></li>

<li class="Nlist_item"><a href=" https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=100 " class="Nitem_link" role="menuitem" aria-selected="false" onclick="nclk(event,'lnb.pol','','');"><span class="Nitem_link_menu">정치</span></a></li>

<li class="Nlist_item"><a href=" https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=101 " class="Nitem_link" role="menuitem" aria-selected="false" onclick="nclk(event,'lnb.eco','','');"><span class="Nitem_link_menu">경제</span></a></li>

<li class="Nlist_item"><a href=" https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=102 " class="Nitem_link" role="menuitem" aria-selected="false" onclick="nclk(event,'lnb.soc','','');"><span class="Nitem_link_menu">사회</span></a></li>

<li class="Nlist_item"><a href=" https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=103 " class="Nitem_link" role="menuitem" aria-selected="false" onclick="nclk(event,'lnb.lif','','');"><span class="Nitem_link_menu">생활/문화</span></a></li>

 

 

ChatGPT 에게 파이썬 샘플코드를 질문  

https://chat.openai.com/  에 가입을 하여, 아래와 같은 질문을 하면 샘플코드를 알려줍니다. 

 

Q. 일반적인 웹 페이지를 스크래핑하는 파이썬 샘플코드를 알려줘

A. ChatGPT 가 아래와 같은 파이썬 샘플코드를 제공했습니다. 


import requests
from bs4 import BeautifulSoup

# 스크래핑할 페이지의 URL

# requests를 사용하여 페이지의 HTML 코드 가져오기
response = requests.get(url)

# BeautifulSoup을 사용하여 HTML 코드 파싱하기
soup = BeautifulSoup(response.text, 'html.parser')

# 파싱된 HTML에서 원하는 데이터 추출하기
title = soup.title.text
paragraphs = [p.text for p in soup.find_all('p')]

# 추출된 데이터 출력하기
print(f'Title: {title}')
print('Paragraphs:')
for p in paragraphs:
    print(f'- {p}')



Q. class 안에 들어있는 link 와 그 텍스트 를 추출하는 샘플코드

A. ChatGPT 가 아래와 같은 파이썬 샘플코드를 제공했습니다. 

import requests
from bs4 import BeautifulSoup

# 스크래핑할 페이지의 URL

# requests를 사용하여 페이지의 HTML 코드 가져오기
response = requests.get(url)

# BeautifulSoup을 사용하여 HTML 코드 파싱하기
soup = BeautifulSoup(response.text, 'html.parser')

# 클래스가 'example-class'인 요소에서 링크와 함께 텍스트 추출하기
for element in soup.find_all(class_='example-class'):
    link = element.find('a')
    if link is not None:
        print(link.get('href'), link.get_text())

위 코드에서는 find_all 메소드로 클래스가 example-class인 요소를 모두 찾은 후, 각각의 요소에서 find 메소드를 사용하여 내부의 a 태그를 찾습니다. 그리고 link 변수가 None이 아니면, 해당 a 태그에서 href 속성과 get_text() 메소드를 사용하여 링크 텍스트를 추출하여 함께 출력합니다. 이렇게 하면 클래스나 span 안에 들어있는 링크와 함께 텍스트를 추출할 수 있습니다. 이제 ChatGPT 에서 알려준 파이썬 코드와 네이버 뉴스 메인 페이지 소스를 참고해서, url 과 class 명칭을 변경한 코드는 아래와 같습니다.

 

 

네이버 뉴스의 카테고리를 스크래핑하기 완성된 코드 



import requests
from bs4 import BeautifulSoup

# 스크래핑할 페이지의 URL

# requests를 사용하여 페이지의 HTML 코드 가져오기
response = requests.get(url)

# BeautifulSoup을 사용하여 HTML 코드 파싱하기
soup = BeautifulSoup(response.text, 'html.parser')

# 파싱된 HTML에서 원하는 데이터 추출하기
title = soup.title.text

# 클래스가 'example-class'인 요소에서 a 태그 추출하기
for element in soup.find_all(class_='Nlist_item'):
    link = element.find('a')
    if link is not None:
        print(link.get('href'), link.get_text())


 

네이버 뉴스의 카테고리를 스크래핑한 결과 

위와 같이 작성된 코드를 실행해보면 아래와 같은 결과로 표시됩니다. 네이버 뉴스의 카테고리명과 링크를 잘 갖고 왔음을 확인할 수 있습니다. 

 

네이버 뉴스의 카테고리 링크와 텍스트를 파이썬으로 스크래핑한 최종 결과

 

 

< 다른 웹 크롤링, 스크래핑 개발 > 

파이썬) ChatGPT 로 네이버 뉴스 속보 웹 크롤링 스크래핑 개발 

파이썬) ChatGPT 로 네이버 IT 뉴스 페이징 웹 크롤링 스크래핑 개발 

파이썬) ChatGPT 로 네이버 IT 뉴스 웹 크롤링 스크래핑 개발 

파이썬) ChatGPT 로 네이버 뉴스 카테고리 웹 크롤링 스크래핑 개발 

반응형

지금 뜨고 있는 이야기들

10월 알뜰폰 요금제 추천 Top 5

챗GPT 한국어 설정, 챗GPT 한글 사용법

챗GPT 무료 와 챗GPT 유료 차이점과 GPT-4 무료 사용법

챗GPT 어플, 안드로이드 앱 설치와 사용법, GPT-4o 음성 대화, 무료 사용법

GPT-5와 의료 분야, AI의 역할 재정립

AI 기반 검색 엔진, ChatGPT의 SearchGPT와 구글의 비교

챗GPT로 하루 100통 이메일 자동 작성하는 비법 공개

경제 지표 시계열 분석을 통한 정책 제언, 파이썬을 활용한 GDP 성장률 예측과 그 활용법


챗GPT GPT-4o 무료로 그림 그리기



관련글 더보기

댓글 영역