Chat GPT로 웹 스크래핑 작업하기

웹 스크래핑 간소화에 ChatGPT 활용하기

웹 스크래핑은 스크립트를 통해 웹 사이트에서 데이터를 자동으로 추출하는 것입니다. ChatGPT는 웹 스크래핑 스크립트 코드를 손쉽게 생성할 수 있습니다. 이 작업을 수행하는 방법을 자세히 살펴 보겠습니다.

IMDb는 최고 평점 영화 차트를 포함하여 영화, 텔레비전 프로그램 및 기타 엔터테인먼트 형식에 대한 세부 정보를 제공하는 플랫폼입니다. 웹사이트 https://www.imdb.com/chart/top/?ref_=nv_mv_250 에서는 제목, 출연진, 감독 및 IMDb 등급이 포함된 IMDb의 상위 250개 등급 영화 목록을 제공합니다:

https://www.imdb.com/chart/top/?ref_=nv_mv_250
Python과 웹 스크래핑 라이브러리인 BeautifulSoup을 사용하여 이 사이트에서 영화 정보를 수집하기 위해 웹 스크래핑을 사용하려고 한다고 가정해 보겠습니다. 아마도 ChatGPT가 필요한 코드를 작성하는 데 도움을 줄 수 있을 것입니다. 다음 쿼리를 입력하여 ChatGPT에 이 작업을 수행하도록 요청하면 됩니다:

“Web scrape https://www.imdb.com/chart/top/?ref_=nv_mv_250 with Python and BeautifulSoup”

그러면 아래 스크린샷에서 볼 수 있듯이 ChatGPT가 구체적인 구현 단계와 해당 Python 소스 코드를 제공합니다:

이 결과는 이미 상당히 인상적이며 소스 코드가 어떻게 목적을 달성 하는지 이해하는 데 도움이 됩니다. 그러나 더 쉽게 복사하여 붙여넣을 수 있도록 구현을 단일 파일로 통합하는 것을 선호합니다. Python 웹 스크래핑 스크립트를 단일 파일로 제공하도록 ChatGPT에 요청해 보겠습니다:

“코드를 하나의 파일로 제공해 주세요.”라고 요청합니다.

놀랍게도 ChatGPT는 즉시 전체 소스 코드를 제공합니다:

아래는 ChatGPT가 생성한 전체 Python 코드입니다:

import requests
from bs4 import BeautifulSoup
import pandas as pd

# Retrieve the HTML content of the website
url = ‘https://www.imdb.com/chart/top/?ref_=nv_mv_250’
response = requests.get(url)

# Parse the HTML content
soup = BeautifulSoup(response.text, ‘html.parser’)

# Find all movie elements
movies = soup.find_all(‘td’, class_=‘titleColumn’)

# Extract the desired information
data = []
for movie in movies:
title = movie.find(‘a’).text
year = movie.find(‘span’, class_=‘secondaryInfo’).text
data.append({‘title’: title, ‘year’: year})

# Create a dataframe and save it to a csv
df = pd.DataFrame(data)
df.to_csv(‘imdb_top_movies.csv’, index=False)

코드가 제대로 동작 하는지 확인해 봅시다. 이를 위해 먼저 새 파일을 만들어 주세요:

$ mkdir chatgpt-web-scrape
$ cd chatgpt-web-scrape
$ touch webscrape.py

파일 생성이 완료 되면, 아래 코드를 복사하여 webscrape.py에 붙여넣어 주세요.


명령줄(커맨드)에 아래의 명령어를 입력해서 파이썬 스크립트를 실행해주세요:

$ python webscrape.py

초기의 스크립트가 imdb_top_movies.csv라는 새 파일을 생성한 것을 확인한 결과, 이 파일에 추출된 영화 정보가 CSV 형식으로 성공적으로 포함되어 있는 것을 확인됩니다. 스크립트는 아무런 추가적인 수정 작업 없이도 완벽하게 작동 했습니다.

처음에는 웹 사이트에서 추출할 영화 세부 정보를 지정하지 않았지만 ChatGPT는 영화 이름과 개봉 연도를 수집하기로 선택했습니다. IMDb 등급을 포함하기 위해 “각 영화의 IMDb 등급도 검색해 주세요.”라는 요청을 ChatGPT에 입력하기만 하면 됐습니다.

이에 대해 ChatGPT는 기존 코드를 수정하고 등급 정보 추출을 통합하기 위한 자세한 지침과 코드 스니펫(snippets)을 제공했습니다. 그런 다음 ChatGPT에 이러한 변경 사항을 스크립트에 통합해 달라고 요청하면서 “시도 제외 블록과 함께 전체 코드를 하나만 주세요”라고 요청했습니다.

그 결과 ChatGPT는 웹 사이트에서 추가 정보를 추출하기 위한 수정 사항을 포함하는 업데이트된 Python 스크립트를 생성했습니다.

결론적으로, 웹 스크래핑 스크립트를 생성하는 ChatGPT의 기능은 작업을 크게 간소화하고 사용자가 지체 없이 프로세스에 뛰어들 수 있게 해주므로 매우 유용한 도구입니다.