파이썬으로 웹 크롤러 만들기 - 1장

Jajuna_99·2022년 9월 25일
0

첫 번째 웹 스크레이퍼

기본적인 웹의 구조(정말 간단히)와 BeautifulSoup (이하 BS, BS4)를 소개하고 간략하게 실습하는 장이다.

연결 (p.23)

사용자가 웹에서 'www.google.com'을 검색하면 결과가 나오기까지의 과정을 컴퓨터구조 방면, 네트워크 방면, 클라이언트-서버 방면으로 간략하게만 설명해준다.

아마 웹의 전반적인 구조를 이해하고 크롤링을 배우는게 좋다고 판단하신듯 하다.

그리고 파이썬으로 위와 같은 방법 (서버에서 GET 요청&열기)를 바로 실습해본다. (p.25)

  • 이 코드는 정적인 html 파일 하나만 받어서 보여주기 때문에 지속적인 업데이트가 되지 않는다.

BeautifulSoup 소개 (p.27)

BS 설치법을 알려주고(리눅스 버전, pip 버전), 파이썬 개발 입문서의 단골인 가상환경과 파이썬 버전 주의사항이 나온다.

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

def getTitle(url):
    try:
        html = urlopen(url)
    except HTTPError as e:
        return None
    try:
        bs = BeautifulSoup(html.read(), 'html.parser')
        title = bs.body.h1
    except AttributeError as e:
        return None
    return title

title = getTitle('http://www.pythonscraping.com/pages/page1.html')
if title == None:
    print('Title could not be found')
else:
    print(title)

참고로 위에 코드는 '개요'에 달아놓은 본인 깃허브에도 올려놨다. -> 짜잘한 함수 설명 주석은 깃허브에 있다.

코드 설명

  • 딱히 설명이 필요없는 직관적이고, 명료한 코드인 듯 하다.
  • 다만 bs에 들어가는 2번째 매개변수는 '구문 분석기'라는 것만 알면 될 듯하다.
  • 책에서는 html.parser 위주로 사용한다고 했다. -> 다른 구문 분석기로는 lxml 등이 있다.
  • 그리고 데이터 형식이 제대로 지켜지지 않는 웹사이트들에 대비해 except 문도 추가했다.
  • 이 외에도 태그 안에 내용이 없을 때 등 여러 예외 처리를 대비해 둬야 좋은 스크레이퍼를 만들 수 있겠다.

요약

2장 정도 읽어봤는데 작가님이 알고 있는 지식이 많아 풍부한 설명을 위한 도메인들이 좀 많다. 얘기가 명료하지 못 하다고 느낄 수도 있겠다. 하지만 실습 내용에 대해서는 정확하게 이해하고 설명한다는 느낌이 강하게 든다.

profile
Learning bunch, mostly computer and language

0개의 댓글