파이썬으로 웹페이지 스크래핑(Beautiful Soup)

전치



O'Reilly Japan의 「Python과 JavaScript로 시작하는 데이터 비주얼라이제이션」을 참고로 공부하고 있습니다.

이번에는 Beautiful Soup을 사용하여 웹 페이지의 간단한 스크래핑을 실시합니다.

Beautiful Soup으로 스크래핑



Yahoo! JAPAN 페이지의 뉴스란에 표시되어 있는 기사의 타이틀을 취득해 보겠습니다.
Chrome Developer Tools에서 스크래핑 당시 태그 및 속성 정보를 확인할 수 있는 캡처를 아래에 첨부합니다.



사전 준비


pip install beautifulsoup4
pip install lxml

함수 작성



웹 페이지를 BeautifulSoup 객체로 가져오는 함수

bsoup4.py
from bs4 import BeautifulSoup
import requests

ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)" \
     "AppleWebKit/537.36 (KHTML, like Gecko)" \
     "Chrome/60.0.3112.113"


def get_soup(url):
    response = requests.get(url, headers={"User-Agent": ua})
    return BeautifulSoup(response.content, "lxml")

User-Agent 속성을 설정하지 않으면 Yahoo! JAPAN에서 간단한 웹 페이지를 반환했습니다.
이 속성을 설정하지 않은 경우 Wikipedia 등과 같이 요청을 거부하는 페이지도 있는 것 같습니다.

웹페이지 스크래핑 구현


>>> import bsoup4
>>>
>>>  # BeautifulSoupオブジェクトの取得
>>> soup = bsoup4.get_soup('https://www.yahoo.co.jp/')

>>>  # BeautifulSoupオブジェクトから、ニュース欄部分を抽出
>>> topicsfb = soup.find_all('div', attrs={'id':'topicsfb'})

>>>  # ネストしているタグから、必要なデータを抽出
>>> for topic in topicsfb:
...     for ultags in topic.find_all('ul', attrs={'class':'emphasis'}):
...         for atags in ultags.find_all('a'):
...             print(atags.text)
...
新党合流 同調者に自民不安写真
現職堺市長3選 都構想に打撃写真NEW
6階から転落か 1歳女児が死亡動画
独に絶望 帰国する難民たち動画NEW
発売30年 糸ようじの試行錯誤写真NEW
中日岩瀬&荒木 コーチ兼任に写真NEW
元体操選手 田中理恵さん妊娠写真
だんじり 宮川大輔圧倒される写真

※Web페이지의 아이콘 부분의 문자가 출력되어 버리고 있습니다.

참고



Beautiful Soup 문서
htp // //t c.んふぉ/베아우치후 lso p/

좋은 웹페이지 즐겨찾기