파이썬 - 파이썬을 사용한 웹 스크래핑 입문하기(A Practical Introduction to Web Scraping in Python)

cathy·2024년 5월 2일
0

Studying Room

목록 보기
5/10
post-thumbnail

목표

  1. 문자열 메소드와 정규 표현식을 사용하여 웹 사이트 데이터를 구문 분석하기
  2. HTML Parser를 사용하여 웹 사이트 데이터를 구문 분석하기
  3. 폼 및 기타 웹사이트 구성요소와의 상호작용

진행

  • Python IDLE
  • Python Shell
  • 기타 편집기도 무관함

웹 스크래핑이란?

컴퓨터 프로그램이 웹 페이지에 접속하여 데이터를 자동으로 추출하는것이 스크래핑이다. 이는 스크린 스크래핑과 웹 스크래핑으로 구분된다. 스크린 스크래핑은 다른 프로그램의 화면 출력을 영상처리 기법 등으로 읽어내서 데이터를 추출하는것이고, 웹 스크래핑은 웹 페이지에서 자동화된 프로세스를 사용하여 데이터를 추출하는것을 말한다. 대표적인 파이썬 라이브러리로 Beautiful Soup 이 있다.

웹 스크래핑이 명시적으로 금지되는경우

Google Maps와 같은 사이트는 데이터를 보호해야할 이유가 있기 때문에 너무 많은 결과를 빠르게 요청하는것을 허용하지않는다. 또한 웹 서버에 많고 반복되는 요청을 보내면 대역폭을 소모하여 다른 사용자의 웹사이트 속도가 느려지고 전혀 응답하지 않을 정도로 서버가 과부하 될 수 있다.
웹 스크래핑을 위해 파이썬 기술을 사용하기 전, 대상 사이트의 허용 정책을 항상 확인하여 자동화된 도구로 웹사이트에 접근하는것이 이용 약관을 위반하는지 확인해야한다.

튜토리얼 시작

Real Python 서버에 호스팅된 페이지를 사용할것이다. 우선 파이썬 IDEL 을 실행해준다.

urllib

파이썬의 표준 라이브러리에서 웹 스크래핑에 유용한 패키지. URL 작업을 위한 도구를 포함하고있다. urllib.request 모듈에는 프로그램 내에서 URL을 열 수 있는 urlopen() 함수가 있다.

>>> from urllib.request import urlopen

먼저 IDLE 의 대화형 창에 urlopen()을 가져온다.

>>> url = "http://olympus.realpython.org/profiles/aphrodite"

열고자 하는 웹페이지의 url

>>> page = urlopen(url)

웹 페이지를 열기 위해 urlopen()에 url 전달

>>> page
<http.client.HTTPResponse object at 0x105fef820>

urlopen()은 HTTPResponse 객체를 반환

>>> html_bytes = page.read()
>>> html = html_bytes.decode("utf-8")

페이지에서 HTML을 추출하기위해 먼저 HTTPResponse 객체의 .read()메소드를 사용하여 바이트 시퀀스를 반환. 그리고 .decode()를 이용하여 UTF-8을 사용하여 바이트를 문자열로 디코딩.

>>> print(html)
<html>
<head>
<title>Profile: Aphrodite</title>
</head>
<body bgcolor="yellow">
<center>
<br><br>
<img src="/static/aphrodite.gif" />
<h2>Name: Aphrodite</h2>
<br><br>
Favorite animal: Dove
<br><br>
Favorite color: Red
<br><br>
Hometown: Mount Olympus
</center>
</body>
</html>



0개의 댓글