상세 컨텐츠

본문 제목

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

ChatGPT 와 파이썬

by 마리우치 2023. 5. 14. 18:34

본문

반응형

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

네이버의 IT 뉴스 특정한 링크를 ChatGPT 에게 알려주고, 웹 스크래핑 코드를 제공받아서 기능을 구현해보겠습니다. 이전에 만들어본 네이버 뉴스 카테고리의 경우에는 Beautifulsoup 같은 html 파서만으로도 스크래핑을 하였지만, 어떤 웹 페이지는 javascript 를 사용하거나, 웹 스크래핑을 막는 경우도 있기 때문에 이번에는 Selenium 라이브러리를 사용하여 웹 드라이버를 조작하고, 페이지를 로드한 후 페이지 소스를 받아오는 코드를 제공했습니다. 아래는 네이버 뉴스 페이지에서 헤드라인 뉴스 제목, 링크, 언론사, 작성일을 추출하는 코드입니다. 이 코드에서 webdriver.Chrome('chromedriver.exe')는 크롬 드라이버를 로드하는 코드입니다. 또한, driver.get(url)은 웹 드라이버로 url을 열어주는 코드이고, 페이지 로드가 완료된 후, driver.page_source를 통해 현재 페이지의 소스를 받아와서 BeautifulSoup 객체를 생성합니다. 마지막으로, news_list에서 각각의 뉴스 제목, 링크, 언론사, 작성일을 파싱하여 출력합니다. 웹 크롤링을 위해서는 웹드라이버가 필요하며, 크롬을 사용할 경우에는 크롬 드라이버를 설치해야 합니다. 크롬 드라이버를 설치하기 위해서는 먼저 사용하는 크롬 브라우저의 버전을 확인한 뒤에, 해당 버전과 호환되는 크롬 드라이버를 다운로드 받아야 합니다. 그리고 다운로드 받은 드라이버 파일을 현재 스크립트가 위치한 경로에 넣거나, PATH 환경 변수에 등록해야 웹드라이버를 사용할 수 있습니다. 

 

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

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

 

그렇다면 뉴스를 읽어오는 것은 스크래핑이 정확한 용어임을 알 수 있습니다. 이제부터 네이버 뉴스 IT과학, IT일반 페이지 웹 스크래핑 개발을 시작합니다.  

 

< 웹 스크래핑을 할 네이버 뉴스 IT/과학, IT 일반 페이지 > 

 

< 웹 스크래핑을 할 네이버 뉴스 IT/과학, IT 일반 페이지의 html 소스 > 

 

ChatGPT 에게 네이버 IT 뉴스 스크래핑 하는 코드 물어보기  

Q. https://news.naver.com/main/list.naver?mode=LS2D&mid=shm&sid1=105&sid2=230  페이지를 파이썬으로 스크래핑하는 코드 

A. ChatGPT 가 아래와 같은 파이썬 샘플코드를 제공했습니다.  실행을 해보니 작동은 잘되지만, title 값이 표시가 되지 않습니다.  ChatGPT 가 코드를 제공했지만,  각 뉴스에서 a 태그가 두번씩 나오고, 제목은 2번째 a 태그에 있는 것을 확인해야 값이 들어 있기 때문입니다.  그래서 ChatGPT 가 제공한 코드에 추가로 수정을 해보겠습니다. 



from selenium import webdriver
from bs4 import BeautifulSoup

# 웹 드라이버 로드
driver = webdriver.Chrome('chromedriver.exe')

# 페이지 로드
driver.get(url)

# 페이지 소스 받아오기
html = driver.page_source

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

# 뉴스 목록 파싱
news_list = soup.select('#main_content .list_body .type06_headline li')

for news in news_list:
    title = news.select_one('a').text
    link = news.select_one('a')['href']
    press = news.select_one('.writing').text
    date = news.select_one('.date').text

    print(title)
    print(link)
    print(press)
    print(date)
    print('-' * 50)

# 웹 드라이버 종료
driver.quit()


< 파이썬 웹 스크래핑 실행 결과 : title 값은 표시되지 않음, 수정이 필요한 것을 알 수 있음  > 

 

두번째 A 태그의 TITLE 을 가져오는 것으로 수정하기 

아래 코드에서는 news.select_one('a')를 사용하여 첫 번째 a 태그를 선택합니다. 따라서 두 번째 a 태그를 선택하려면 select를 사용하여 모든 a 태그를 가져와 리스트로 저장한 후, 인덱싱을 통해 두 번째 a 태그를 선택할 수 있습니다. 다만, 뉴스가 이미지 링크, 기사 타이틀 링크로 보통 구성이 되어 있는 데, 어떤 경우에는 이미지(기사 사진) 이 없는 경우가 간혹 발생하고 있습니다.  그래서 아래와 같이 코드를 수정하였습니다. 



from selenium import webdriver
from bs4 import BeautifulSoup

# 웹 드라이버 로드
driver = webdriver.Chrome('chromedriver.exe')

# 페이지 로드
driver.get(url)

# 페이지 소스 받아오기
html = driver.page_source

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

# 뉴스 목록 파싱
news_list = soup.select('#main_content .list_body .type06_headline li')

for news in news_list:
    a_tags = news.find_all('a')
    if (len(a_tags) >= 2):
        # 모든 a 태그 선택 후 두 번째 a 태그 선택
        second_a = news.select('a')[1]
        title = second_a.text.strip()
        link = second_a['href'].strip()
    else:
        title = news.select_one('a').text.strip()
        link = news.select_one('a')['href']

    press = news.select_one('.writing').text.strip()
    date = news.select_one('.date').text.strip()

    print(title, "\n", link, "\n", press, "\n", date, "\n\n\n")

# 웹 드라이버 종료
driver.quit()


< 파이썬 웹 스크래핑 실행 결과 : title 값이 정상으로 표시됨  > 

위와 같이 작성된 코드를 실행해보면 아래와 같은 결과로 표시됩니다. 네이버 뉴스 IT/과학의 뉴스에서 제목, 링크, 언론사명, 업데이트 시간 등을 잘 가져왔음을 확인할 수 있습니다.  






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

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

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

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

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

반응형

지금 뜨고 있는 이야기들

아이폰16 Pro, 자급제, 사전 예약, 네이버 쇼핑 top 50




김포 재개발 대장주 한강 수자인 오브센트




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



관련글 더보기

댓글 영역