Back to Insights생산성 및 기술 도구

파이썬으로 웹 스크래핑하는 방법: 5분 안에

Mercury Technology Solutions2020년 3월 20일3 min read

TL;DR:웹 스크래핑은 웹사이트에서 데이터를 자동으로 추출하여 시간과 노력을 절약하는 방법입니다. 이 가이드는 파이썬을 사용하여 뉴욕 MTA에서 여러 파일을 다운로드하는 과정을 안내하며, 법적 고려사항의 중요성을 강조하고 단계별 코드 예제를 제공합니다.

웹 스크래핑 마스터하기: 데이터 추출 자동화

웹 스크래핑은 웹사이트에서 대량의 정보를 자동으로 접근하고 추출하는 강력한 기술입니다. 이는 데이터를 수집하는 데 필요한 시간과 노력을 크게 줄여주며, 힘든 수작업을 효율적인 자동화된 프로세스로 전환합니다.

이 가이드에서는 뉴욕 MTA 웹사이트에서 수백 개의 파일을 다운로드하는 실제 애플리케이션을 안내합니다. 이 예시는 웹 스크래핑의 세계를 탐험하고자 하는 초보자에게 적합합니다.

웹 스크래핑 이해하기

코드에 들어가기 전에 웹 스크래핑의 윤리적 및 법적 고려사항을 이해하는 것이 중요합니다. 데이터의 사용이 준수되는지 확인하기 위해 항상 웹사이트의 이용 약관을 읽어보세요. 많은 사이트는 상업적 목적으로 데이터를 사용하는 것을 금지합니다. 또한, 데이터를 너무 빠르게 다운로드하는 것은 서버에 과부하를 일으킬 수 있으므로 피해야 합니다.

데이터를 위한 웹사이트 검사하기

웹 스크래핑의 첫 번째 단계는 웹사이트의 HTML 내에서 추출하고자 하는 데이터를 찾는 것입니다. 우리의 예에서는 2010년 5월부터 현재까지 주간 집계된 데이터를 .txt 파일로 호스팅하는 MTA 웹사이트에서 회전문 데이터를 스크래핑할 것입니다.관련 HTML 요소를 찾기 위해:웹페이지를 마우스 오른쪽 버튼으로 클릭하고 "검사"를 선택하여 사이트의 코드를 확인합니다.

검사 도구를 사용하여 요소를 강조 표시하고 해당 HTML 태그를 찾습니다. 우리의 경우, 대상 데이터 파일은 일반적으로 하이퍼링크에 사용되는 <a> 태그 내에 있습니다.

  1. 파이썬으로 코딩하기
  2. 웹 스크래핑에 필요한 파이썬 코드를 시작해 보겠습니다. 우리는 다운로드 프로세스를 자동화하기 위해 requests, urllib 및 BeautifulSoup와 같은 라이브러리를 사용할 것입니다.1단계: 라이브러리 가져오기import requests

import urllib.request

import timefrom bs4 import BeautifulSoup2단계: 웹사이트 접근하기URL을 설정하고 사이트의 콘텐츠에 접근하기 위해 요청을 보냅니다.url = 'http://web.mta.info/developers/turnstile.html'response = requests.get(url)3단계: HTML 파싱하기

BeautifulSoup를 사용하여 HTML을 파싱하고 탐색 가능한 구조를 만듭니다.

soup = BeautifulSoup(response.text, "html.parser")4단계: 링크 찾기파일 링크가 위치한 모든 <a> 태그를 찾아 38번째 줄부터 시작합니다.soup.findAll('a')

one_a_tag = soup.findAll('a')[38]

link = one_a_tag['href']

5단계: 파일 다운로드하기파일의 전체 URL을 구성하고 다운로드합니다.

Step 3: Parse the HTML

Use BeautifulSoup to parse the HTML and create a navigable structure.

soup = BeautifulSoup(response.text, "html.parser")

Step 4: Locate the Links

Find all <a> tags, where our file links are located, starting from the 38th line.

soup.findAll('a')one_a_tag = soup.findAll('a')[38]link = one_a_tag['href']

Step 5: Download the Files

Construct the full URL for the file and download it using urllib.

download_url = 'http://web.mta.info/developers/' + linkurllib.request.urlretrieve(download_url, './' + link[link.find('/turnstile_')+1:])

6단계: 루프를 사용하여 자동화하기

모든 파일에 대한 프로세스를 자동화하기 위해 수동 다운로드를 루프로 대체하세요.

이 단계들을 따르면 웹 스크래핑을 통한 데이터 다운로드 프로세스를 자동화하는 데 한 걸음 더 나아갈 수 있습니다. 이 기술은 효율성을 최적화할 뿐만 아니라 데이터 기반 의사 결정의 새로운 길을 열어줍니다.

모두 즐거운 웹 스크래핑 되세요!

Originally published on MTS Blog & Research