pandasだけでWEBスクレイピングする
一般的にスクレイピングを使用とすると、requestsでHTMLなりjsonなりを拾ってくるのが一般的かと思われます。
Python, Requestsの使い方 | note.nkmk.me
ただ、tableタグで構造化されている場合、pandasだけでデータを拾ってこれるので大変お手軽です。
例えばwikiでオリンピックの各国メダル数をみると、HTMLのテーブル形式に整理されています。
以下、URLを指定してpandas.read_html
するだけです。
import pandas as pd df_list = pd.read_html("https://ja.wikipedia.org/wiki/%E8%BF%91%E4%BB%A3%E3%82%AA%E3%83%AA%E3%83%B3%E3%83%94%E3%83%83%E3%82%AF%E3%81%A7%E3%81%AE%E5%9B%BD%E3%83%BB%E5%9C%B0%E5%9F%9F%E5%88%A5%E3%83%A1%E3%83%80%E3%83%AB%E7%B7%8F%E7%8D%B2%E5%BE%97%E6%95%B0%E4%B8%80%E8%A6%A7")
戻り値はlistです。
print(type(df_list)) >>> <class 'list'>
自分が欲しい要素を確認して完了です。
df_list[0].head() >>> 国・地域 夏季参加回数 金 銀 銅 合計 冬季参加回数 金.1 銀.1 銅.1 合計.1 参加回数 金.2 銀.2 銅.2 総数 0 アフガニスタン (AFG) 14 0 0 2 2 0 0 0 0 0 14 0 0 2 2 1 アルジェリア (ALG) 13 5 4 8 17 3 0 0 0 0 16 5 4 8 17 2 アルゼンチン (ARG) 24 21 25 28 74 19 0 0 0 0 43 21 25 28 74 3 アルメニア (ARM) 6 2 6 6 14 7 0 0 0 0 13 2 6 6 14 4 オーストララシア (ANZ) [ANZ] 2 3 4 5 12 0 0 0 0 0 2 3 4 5 12
BeautifulSoup、セレクタ等の知識も不要で、HTMLから正規表現で抽出する必要もなく、便利です。
クローリングする場合にも、もしtableタグの内容であればpandas経由すると簡単にテーブルデータ化できることが多々あります。