[파이썬 웹 크롤러] 2. BeautifulSoup를 사용해보다.

2017.02.13 00:27발자국

책의 2장, 3장을 따라해보았다.

1. 파이썬3 내장 라이브러리 사용

 시작하기에 앞서 Python 3.5 RC버전을 지우고 3.6 정식버전으로 설치하였다.

 책의 2장 3장의 에제에서는 사용된 라이브러리를 살펴보자.

 Html 문서를 읽기 위해서 urllib을 사용하였다.

from urllib.request import urlopen from urllib.request import HTTPError from urllib.parse import quote
  1. urllib.request 패키지의 url에 접근하여 html을 불러올 urlopen 함수와 html 에러 처리를 위한 HTTPError 클래스(1장 예제) 사용하였다.
  2. urrlib.parse 패키지의 quote를 사용해보았는데, 책의 예제는 en.wikipedia.org에 접속하여 html문서를 읽어오는데, url에 한글이 들어간 ko.wikipedia.org를 읽어오기 위해서 quote 함수를 사용하였다
    • quote는 url에서 특수문자나 유니코드를 사용할 때 문자 그대로 인식하기 위해서 %문자로 변경시켜주는 역할을 한다.
    • quoute(문자열) 또는 quote(문자열, 변경하지 않을 문자열)로 사용할 수 있었다.
    • 추가로 qoute 함수에 의해서 Encode된 문자열은 unquote 함수로 Decode 할 수 있다.
import re import datetime import random

 그외 기본 라이브러리로 re(정규식), datetime(랜덤 시드로 사용), random(난수 생성) 모듈을 사용해보았다.

2. BeautifulSoup

이 책을 3장까지는 첫 번째로 from urllib.request import urlopen를 선언하여 urlopen 함수를 이용해서 해당 url을 열어 html을 읽어온다. 두 번째로는 from bs4 from BeautifulSoup를 선언하여 BeautifulSoup 클래스를 이용하여 Html 문서를 자유자재로 다룰 수 있었다.

  1. BeautifulSoup 클래스의 인스턴스 생성
    • BeautifulSoup(html문서, 'html.parse')
    • html.parse로 사용할 BeautifulSoup 객체를 생성한다
  2. 찾고 싶은 내용을 검색 find(),findAll()
    • 1에서 생성한 객체를 bsObj라고하였을 때, bsObj.find()bsObj.findAll()로 원하는 태그나 속성을 추출 해낼 수 있다.

참고 자료

"파이썬으로 웹 크롤러 만들기 - 지은이 : Ryan Mitchell, 옮긴이 : 한선용, 펴낸 곳 : 한빛미디어(주)"

참고 사이트

파이썬3에서 url의 unicode 다루기- 스택 오버플로우


1 2 3 4 5 6 ··· 8