【Python】Webスクレイピング入門・ライブラリ比較

Pythonを用いたWebスクレイピングと便利なライブラリの比較について入門者向けにまとめました。

Webスクレイピングとは

Webスクレイピングとは、Webサイトから情報を抽出することです。
例えば、あるサイトに掲載している画像を自動でダウンロードしたりすることです。
Pythonでは、Webスクレイピングを簡単に行えるライブラリが豊富です。
また、最近は機械学習ブームにより、機械学習に必要な大量のデータをネット上で集めるためにWebスクレイピングが利用されたりしています。

Webスクレイピングの主要ライブラリ

Webスクレイピングの主要Pythonライブラリを下記に整理しました。

ライブラリ名 概要
urllib ■Python標準ライブラリ(必須)
■「Webサイトへのアクセス」「HTMLファイルの取得」などを行えるライブラリ
■HTMLパースの機能はないため、urllibでHTMLを取得して、他のライブラリでHTMLから欲しいデータを抽出するという使い方が多い。
asyncio ■Python標準ライブラリ(3.4~)
■「Webサイトへのアクセス」「HTMLファイルの取得」を非同期で行えるため、多数のWebサイトを高速にクロール可能。
html.parser ■Python標準ライブラリ(必須)
■HTMLをパースできる(HTML解析して欲しい情報を抽出)
■標準ラブラリなので手軽に扱えるが機能が少なく処理も遅い
lxml ■XML/HTMLパース可能
BeautifulSoup4 ■Pythonの定番HTMLパースライブラリ
■内部でlxmlが動いている
PyQuery ■HTMLパース可能(Python版JQuery)
■JQueryを使っている人にはとっつきやすい
Feedparser ■フィード(RSS)パース
Mechanize ■スクレイピング(Perl定番ライブラリ:MechanizeのPython版)
Selenium ■Webブラウザを自動操作できるライブラリ
■アクセスしたサイトのボタンを自動で押したりできる

よくある使い方としては下記のような組み合わせ方です。
①Webページへアクセスし、HTMLを取得:urllib
②取得したHTMLからデータを抽出:BeautifulSoup4、PyQueryなど
③Webページの自動操作:Seleniumなど

Webスクレイピングを行う際の注意

主な注意事項

ただし、Webスクレイピングを行う際はアクセス先のサーバに負荷をかけたり、著作権保護の問題等もあるため注意する必要があります。
主な注意事項を以下にまとめました。

● サイトに記載されている利用規約等に従って利用する。スクレイピングが禁止されていれば行わない。

● 「robots.txt」「robots metaタグ」「HTTPヘッダーのX-Robots-Tag」に記載されているクローラーに対するルールに従ってアクセスする。

● rel=”nofollow”があるaタグのリンク先はクロールしない。

● サーバにアクセスする間隔時間を開けて高負荷をかけないようにする。(ネット上では最低1秒以上?という情報が多いですが、利用規約その他のルールがあればその指示に従いましょう)

【Python】Webスクレイピング入門・ライブラリ比較
Pythonを用いたWebスクレイピングと便利なライブラリの比較について入門者向けにまとめました。
【Python】Webスクレイピング入門(BeautifulSoup4編)
Pythonモジュール「BeautifulSoup4」を用いたWebスクレイピングについて入門者向けにまとめました。

コメント