Pythonでbeautifulsoupを使いスクレイピング

python コンピュータ
python
pythonでスクレイピングをするにあたり、beautifulsoupというライブラリを使うとHTMLを解析することが出来ます。
PythonでWebからHTMLファイルをダウンロードして解析してみる。
WinPythonをインストールしましたが、Pyhoneの学習が大分ほったらかしになっていましたので、久々にPythonを触ってみたいと思います。今回はWebサイトからHTMLをダウンロードして、ダウンロードしたHTMLファイルを解析するサ...

対象となるページごとにHTMLの構造が異なるので、目的の情報を取得するためには状況に合わせて色々なメソッドを組み合わせる必要があります。

IDを指定してデータを取得

IDはHTMLのページ内で一意(一つ)のはずですので目的のデータを取得しやすいので、IDでデータを取得できるのであれば結構幸運です。
from bs4 import BeautifulSoup

bs = BeautifulSoup(html, 'html.parser')
title = bs.find(id = "title").string

タグとCSSのクラスを指定(複数)

CSSのクラスはHTMLの複数のタグに同じ見た目を指定する機能です。クラスを指定してデータを取得する場合は複数の要素を取得することが想定されます。タグ(エレメント)とセットで指定される場合が多く、以下のサンプルはエレメントdivでクラス名がclass_nameの項目を抽出します。
from bs4 import BeautifulSoup

bs = BeautifulSoup(html, 'html.parser')
cs = prbs.find_all('div', class_='class_name')
for x in cs:
    url = x.select_one('a').get('href')

タグとCSSのクラスを指定

クラスを指定すると複数の要素が該当しますがfind()の場合1つの要素が戻ります。
from bs4 import BeautifulSoup

bs = BeautifulSoup(html, 'html.parser')
cn = bs.find('table', class_='class_name')

コメント