ChatGPT로 웹사이트 크롤링 프로그램 만들기
오늘은 ChatGPT를 활용해서 웹사이트를 크롤링하는 프로그램을 만드는 방법을 알아보겠습니다.
웹사이트 크롤링이란?
웹 크롤링이란 웹상의 정보들을 탐색하고 수집하는 작업을 의미하는데요. 인터넷에 존재하는 방대한 양의 정보를 사람이 일일히 파악하는 것은 불가능한 일입니다. 때문에 규칙에 따라 자동으로 웹 문서를 탐색하는 컴퓨터 프로그램, 웹 크롤러(Crawler)를 만들었다고 할 수 있습니다.
크롤러는 인터넷을 돌아다니며 여러 웹 사이트에 접속해서 정보를 가져옵니다.
기본적으로 파이썬에서 유명한 Beautiful Soup과 같은 패키지를 통해서 크롤링 프로그램을 제작합니다.
오늘은 이 웹사이트 크롤러 프로그램을 ChatGPT와 함께 한번 만드는 과정을 알아보도록 하겠습니다.
ChatGPT 크롤링 프로그램 제작하기
ChatGPT를 활용하면 크롤링 프로그램을 간단하게 만들어 주는데요.
간단하게 naver.com을 크롤링해주는 프로그램을 만들어달라고 프롬프트를 입력하였습니다.
import requests
from bs4 import BeautifulSoup
# 요청 헤더 설정
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# URL 설정
url = 'https://www.naver.com'
# 웹 페이지 요청
response = requests.get(url, headers=headers)
# 요청 성공 여부 확인
if response.status_code == 200:
# HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
# 원하는 데이터 추출 (예: 뉴스 기사 제목)
news_section = soup.find('div', class_='section_news')
headlines = news_section.find_all('a', class_='news_tit')
for headline in headlines:
title = headline.get_text()
link = headline['href']
print(f'Title: {title}')
print(f'Link: {link}')
print('-' * 80)
else:
print(f'Failed to retrieve the webpage. Status code: {response.status_code}')
그리고 친절하게 코드 설명도 해주는데요.
requests 라이브러리를 사용하여 네이버 메인 페이지에 HTTP GET 요청을 보냅니다.
BeautifulSoup을 사용하여 응답 HTML을 파싱합니다.
뉴스 섹션을 찾고, 해당 섹션에서 뉴스 기사 제목과 링크를 추출합니다.
이 코드를 실행하려면 requests와 beautifulsoup4 라이브러리가 설치되어 있어야 합니다. 설치는 다음 명령어를 사용하세요:
이후 간단하게 이를 엑셀로 저장하는 코드를 만들어 달라고 하면 아래처럼 만들어 줍니다.
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 요청 헤더 설정
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# URL 설정
url = 'https://www.naver.com'
# 웹 페이지 요청
response = requests.get(url, headers=headers)
# 요청 성공 여부 확인
if response.status_code == 200:
# HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
# 원하는 데이터 추출 (예: 뉴스 기사 제목)
news_section = soup.find('div', class_='section_news')
headlines = news_section.find_all('a', class_='news_tit')
# 데이터를 저장할 리스트
data = []
for headline in headlines:
title = headline.get_text()
link = headline['href']
data.append({'Title': title, 'Link': link})
# 판다스 DataFrame으로 변환
df = pd.DataFrame(data)
# 엑셀 파일로 저장
df.to_excel('naver_news_headlines.xlsx', index=False)
print('엑셀 파일로 저장되었습니다.')
else:
print(f'Failed to retrieve the webpage. Status code: {response.status_code}')
이처럼 전혀 파이썬을 모르더라도 기본 코드를 만들어주고, 코드별로 그 의미를 주석으로 남겨주는데요.
이 외에도 제목에 어떤 글자가 있으면 따로 표시를 하는 등 원하는 형태로 자유롭게 프로그램을 수정해 볼 수 있습니다.
ChatGPT 크롤러 활용 방법
또한 기본적 프로그램 이외에 본인이 원하는 기능을 추가해 볼 수 있습니다.
먼저 F12를 통해 크롬 개발자 모드를 활성화 하고, Ctrl + Shift + C를 누르면 각각의 요소를 선택해 볼 수 있는데요.
예를 들어 아래처럼 해당 archive-container를 선택하고 마우스 우클릭 copy- copy selector를 복사하여 코드를 짜달라고 할 수 있는데요.
blog.simplify.kr 사이트에서 #archive-container를 크롤링하는 프로그램을 작성해줘
이 후 이렇게 찾아낸 요소를 ChatGPT를 통해서 크롤링해달라고 할 수 있습니다.
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 요청 헤더 설정
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# URL 설정
url = 'https://blog.simplify.kr'
# 웹 페이지 요청
response = requests.get(url, headers=headers)
# 요청 성공 여부 확인
if response.status_code == 200:
# HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
# #archive-container 찾기
archive_container = soup.find(id='archive-container')
if archive_container:
# 데이터를 저장할 리스트
data = []
# 예시: 블로그 포스트 제목과 링크 추출
posts = archive_container.find_all('a')
for post in posts:
title = post.get_text(strip=True)
link = post['href']
data.append({'Title': title, 'Link': link})
# 판다스 DataFrame으로 변환
df = pd.DataFrame(data)
# 엑셀 파일로 저장
df.to_excel('simplify_blog_archive.xlsx', index=False)
print('엑셀 파일로 저장되었습니다.')
else:
print('Archive container not found on the page.')
else:
print(f'Failed to retrieve the webpage. Status code: {response.status_code}')
이처럼 본인이 테스트 해보면서 원하는 프로그램을 제작해보시기 바랍니다. 작업 중 에러가 뜬다면 그 에러 메시지를 그래도 복사 붙여넣어서 ChatGPT에 물어보시면 답변을 해줍니다.
그럼 잘 사용하시기 바랍니다.