상세 컨텐츠

본문 제목

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

ChatGPT 와 파이썬

by 마리우치 2023. 5. 16. 19:20

본문

반응형

네이버 IT 뉴스 를 페이징하여, 스크래핑하기 (웹 크롤링)

지금까지 개발한 네이버 뉴스는 페이징에 대한 부분이 포함되어 있지 않았습니다. 네이버의 각 카테고리별 뉴스는 시간이 지나면서 페이징이 되는 데, 이전의 뉴스까지 스크래핑을 하려면 페이징을 할 수 있는 기능이 추가되어야 합니다. 아래의 네이버 뉴스 화면에서 2페이지를 누르면, 페이지 번호가 들어간 링크(URL) 를 확인할 수 있습니다.  이 링크를 이용하여, ChatGPT 에게 파이썬 코드를 알려달라고 하겠습니다.   이 포스트에서 개발할 사항은 오늘의 IT/과학 카테고리 뉴스에서 1페이지~5페이지 뉴스에 대한 정보를 스크래핑하는 것입니다.  



네이버 뉴스 IT/과학의 IT 일반 뉴스 (하단부에 페이지가 있음)

 

네이버 뉴스의 html 중 각 뉴스에 해당하는 부분 

 

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

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

 

Q. https://news.naver.com/main/list.naver?mode=LS2D&mid=shm&sid2=230&sid1=105&date=20230516&page=2 
     이 페이지를 오늘,  1페이지부터 5페이지까지 스크래핑하는 파이썬 코드, 일자를 현재일로 변경함  
A. ChatGPT 가 아래와 같은 파이썬 샘플코드를 제공했습니다.  이 코드는 네이버 뉴스의 특정 섹션에 대해 특정 날짜에 대한 스크래핑을 수행하는 파이썬 코드입니다.  먼저 datetime 모듈을 사용하여 현재 날짜를 가져오고, 가져온 날짜를 'YYYYMMDD' 형식의 문자열로 변환합니다.  str_page와 end_page 변수를 사용하여 스크래핑할 페이지의 범위를 지정합니다. range 함수를 사용하여 str_page부터 end_page까지 반복하면서 해당 페이지의 HTML을 가져옵니다. (for 문) 가져온 HTML 데이터를 BeautifulSoup 모듈을 사용하여 파싱합니다. select 메소드를 사용하여 HTML에서 원하는 정보를 선택합니다. 이 경우 div.list_body > ul > li로 선택하여 해당 페이지의 기사 목록을 가져옵니다. 가져온 기사 목록에서 하나씩 루프를 돌며 기사 제목, 링크, 출처, 날짜 정보를 추출합니다. 추출한 정보를 출력합니다. 추가로, 코드에서 headers 변수를 이용하여 User-Agent 정보를 전송하여 웹 스크래핑을 할 때, 웹사이트에서 웹스크래핑을 막지 않도록 하는데 도움을 주는 것을 볼 수 있습니다. ChatGPT 에서 제공한 코드를 조금 수정하여, 아래와 같이 코드를 완성하였습니다. 

네이버 IT 뉴스 를 페이징하여, 스크래핑하기 완성된 코드 



import datetime
import requests
from bs4 import BeautifulSoup

# 오늘 날짜 계산
today = datetime.date.today() # 오늘 날짜 계산
today_str = today.strftime('%Y%m%d'# 날짜를 문자열로 변경

# 스크래핑할 페이지 범위 지정
str_page = 1 
end_page = 5

# 스크래핑한 뉴스 개수 초기화
idx = 0 

# 페이지 범위 만큼 스크래핑
for page in range(str_pageend_page + 1):
    # 스크래핑할 페이지 url 생성
    
    # 스크래핑에 필요한 header 지정
    headers = {'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

    # 스크래핑할 페이지 요청
    res = requests.get(urlheaders=headers)

    # 요청 실패시 예외처리
    try:
        res.raise_for_status()
    except Exception as e:
        print(f"페이지 요청에 실패하였습니다. {e}")
        break

    # html 파싱
    soup = BeautifulSoup(res.text'html.parser')

    # 기사 목록 선택
    articles = soup.select('div.list_body > ul > li')

    # 기사 개수만큼 반복문 수행
    for article in articles:
        idx += 1 # 스크래핑한 뉴스 개수 카운팅

        # 기사 제목, 링크 추출
        a_tags = article.find_all('a')
        if (len(a_tags) >= 2):
            # 모든 a 태그 선택 후 두 번째 a 태그 선택
            second_a = article.select('a')[1]
            title = second_a.text.strip()
            link = second_a['href'].strip()
        else:
            title = article.select_one('a').text.strip()
            link = article.select_one('a')['href']

        # 언론사, 날짜 추출
        press = article.select_one('.writing').text.strip()
        date = article.select_one('.date').text.strip()

        # 결과 출력
        print(title"\n"link"\n"press"\n"date"\n\n\n")

    # 한 페이지 스크래핑 후 결과 출력
    print(idx" 개의 뉴스를 스크래핑하였습니다. \n""="*70"\n")



네이버 IT 뉴스 를 페이징하여, 스크래핑한 결과 

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


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

파이썬) 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 무료로 그림 그리기



관련글 더보기

댓글 영역