【Python特化】おすすめのオンラインプログラミングスクール

【Python】スクレイピングに利用するライブラリの使い方と比較

‎python-scraping-library

Webスクレイピングを実施する中で、利用するべきライブラリの選定が必要になります。

また、サイトごとに使い分けの必要性があり、どれを使うべきか悩むケースも少なくありません。

本記事では、サイトの特徴に合わせてスクレイピングに利用するライブラリの使い分けを解説します。

本記事のまとめ
  • Webスクレイピングとは
  • 静的ページと動的ページの違い
  • Webスクレイピングのやり方・手順
  • スクレイピングに利用するライブラリの比較
  • 特定サイトのクローリング&スクレピング
筆者の経歴
  • SIer/Web系企業での実務経験があるフリーランスエンジニア
  • プログラミングスクールでの講師実績あり
  • HR領域によるエンジニア特化の採用代行を業務委託で兼務
目次

Webスクレイピングとは

Webスクレイピングとは、主にサイトからデータを収集する技術を指します。

そのため、サイト内の情報が収集可能かどうかによって、業務効率化できるか左右されます。

Webスクレイピングで何ができる?

Webスクレイピング自体は、データ収集する技術です。

ただ、Webスクレイピングだけでも様々な活用方法があります。

主に画像(動画含む)データ、テキストデータ、数値データを取り扱うことになります。

昨今、機械学習システムやAIに活用するため、学習データとしてスクレイピングを多用します。

また、業界問わずオンラインMTGやインサイドセールス活動が求められる案件がクラウドソーシングサイトで数多く募集されています。

そのため、スクレイピングを利用して営業リスト作成が求められるため、十分利用できる技術の一つになります。

データ収集時の考え方

Webスクレイピングによるデータ収集時に考えるべきことがあります。

一般的に、スクレイピングによって収集したデータを出力するだけではよくありません。

そのため、スクレイピング時に以下のプロセスを考えておくべきです。

スクレイピング時の準備プロセス
STEP
データ収集

API・クローラー/Webスクレイピング等で収集・リクエストし、データを収集します。

STEP
データ解析

HTML構造データを変換し、BeautifulSoupやSelenium等のライブラリで解析します。

STEP
データ抽出

解析から対象になるデータを特定要素(classやxpathなど)から抽出します。

STEP
データ加工・整形

抽出したデータからノイズ(ゴミ)を取り除き、正規化・画像処理などを実施します。

STEP
データ保存・出力

抽出・加工・整形したデータを保存し、目的に沿ったCSVやExcelファイルに出力します。

上記のプロセスをスクレイピング時に取り入れることで、すぐに利用できるデータの状態を作り出すことができます。

静的ページと動的ページの違い

静的ページは、Webサーバーで用意されたHTMLファイルを読み込み、ブラウザ側で表示されます。

一方で、動的ページはリクエストの度にHTMLファイルを再生成します。

そのため、Webスクレイピングの観点から動的ページより静的ページが処理しやすいです。

なぜなら、リクエストに応じて変化する動的ページは、スクレイピング処理だけでなく、ブラウザ操作もプログラムする必要があるためです。

Webスクレイピングが可能なサイトなどを詳しく知りたい人は、「Webスクレイピング可能なサイトの見分け方とOK・禁止なサイト」といった記事を一読ください。

requestsとSeleniumの違い

requestsとSeleniumの違いは、ブラウザ操作・制御の有無になります。

requestsは、Seleniumと違ってブラウザ操作を実施しないため、URLをもとにサイト情報を取得します。

また、サイト情報をHTMLあるいはXMLなどのデータで取得するため、取得後はBeautifulSoupといった解析用ライブラリを利用する必要があります。

Webスクレイピングのやり方・手順

上記で静的ページと動的ページの違いを解説しましたが、スクレイピング処理の際もやり方・手順が異なります。

以下のページ分類にて、解説します。

Webスクレイピングのやり方・手順
  • 静的ページをスクレイピングするやり方・手順
  • 動的ページをスクレイピングするやり方・手順

静的ページをスクレイピングするやり方・手順

requestsモジュールにて、Webページへのアクセスを実施しHTMLファイルをダウンロードします。

HTMLファイルの解析では、BeautifulSoupモジュールを利用します。

最終的な出力ファイルは、csvモジュールなどを利用します。

これらをフレームワークとして利用できるScrapyでもスクレイピング可能です。

動的ページをスクレイピングするやり方・手順

動的ページは、静的ページと違ってURLによるページ遷移ができないため、Seleniumによる画面操作が必要になります。

SeleniumでWebページアクセスと画面操作の処理を実行し、データ要素をスクレイピングする工程まで一括します。

こちらも出力ファイルは、csvモジュールなどを利用します。

requestsのメソッドの使い方

requestsでは、以下の4つが代表的なメソッドになります。

メソッド名説明
requests.get()サーバーから情報を取得
requests.post()サーバーへ情報を送信
requests.put()サーバーの情報を更新
requests.delete()サーバーの情報を削除
requestsの代表的なメソッド

本記事では、Webスクレイピングで多用される.get()メソッドを重点的に解説します。

requests.get()の引数の使い方

Webスクレイピングといったデータ収集などで頻繁に利用されるのがrequests.get()になります。

res = requests.get(URL, 任意の引数)

.get()メソッドを利用することで直感的に操作することができます。

また、以下が主な引数になります。

メソッド名必須/任意説明
URL必須対象URL
headers任意リクエスト時にヘッダーデータを辞書で指定
params任意リクエスト時にURLのクエリパラメータを辞書で指定
cookies任意リクエスト時にクッキーを辞書で指定
timeout任意リクエスト時のタイムアウトを指定
.get()メソッドの引数

スクレイピング業務では、引数にURLのみを利用することが多いです。

requests.get()によるresponseオブジェクトの確認

リクエスト後の戻り値(応答)として、responseオブジェクトが返ってきます。

以下がresponseオブジェクトの属性値になります。

属性説明
status_codeステータスコード
headersレスポンスヘッダーのデータ
contentレスポンスのバイナリデータ
textレスポンスのテキストデータ
encodingエンコーディング(変換方式:utf-8など)
cookiesクッキーデータ
responseオブジェクトの戻り値

基本的にWebスクレイピングでは、responseオブジェクトのtext属性データのみを利用することが多いです。

requestsライブラリをさらに理解したい人は、「【Python】requestsとは?インストールから使い方まで徹底解説!」を一読ください。

BeautifulSoupの代表的なメソッドの使い方

HTMLデータを解析した後、指定した箇所のデータを抽出する必要があります。

本記事では、スクレイピングの際に利用するBeautifulSoupの代表的なメソッドを記載します。

タイプ1要素だけ返す全要素をリストで返す引数(検索条件指定)
find系find()find_all()要素名, 属性指定(キーワード引数)
select系select_one()select()CSSセレクタ
BeautifulSoupの代表的なメソッド

機能はどちらも同じですが、引数の違いによって探し出すアプローチ方法が異なります。

ただし、HTMLデータによってはクラス/idに対して属性値を持たないデータがあるため、その場合はselect系を利用しましょう。

BeautifulSoupをさらに理解したい人は、「【Python】 BeautifulSoup4とは?インストールから使い方まで徹底解説!」を一読ください。

Seleniumのメソッドの使い方

代表的なSeleniumのメソッドは以下の4つです。

メソッド名説明
.get()対象URLを指定しアクセス/データ取得するメソッド
.find_element_by_〇〇(“”)Selenium3にて利用されるfind系メソッド
.find_element(By.〇〇, “xx”)Selenium4にて利用されるfind系メソッド
.send_keys()対象にデータ送信するメソッド
.click()対象をEnterするメソッド
Seleniumの代表的なメソッド

Seleniumにおける各メソッドの使い方を詳細に知りたい人は、「【Python】 Seleniumとは?インストールから使い方まで徹底解説!」を一読ください。

スクレイピングに利用するライブラリの比較

スクレイピングで利用するライブラリは、主に4つになります。

スクロールできます
ライブラリHTML
ダウンロード
コード抽出/解析データ保存ページ分類処理速度
requests静的
BeautifulSoup静的
Selenium静的, 動的
Scrapy静的
ライブラリの比較表

比較表から、静的ページのスクレイピングを実施する場合、requests + BeautifulSouupモジュールの組み合わせを利用するのがおすすめです。

静的ページのスクレイピング例を知りたい人は、「【Python】ページ遷移型のクローリング&スクレイピング方法」を一読ください。

また、動的ページのスクレイピングを実施する場合、Seleniumモジュールを利用するのがおすすめです。

動的ページのスクレイピング例を知りたい人は、「【Python】SeleniumによるGoogleマップのスクレイピング」を一読ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

sugiのアバター sugi SUGI

【経歴】玉川大学工学部卒業→新卒SIer企業入社→2年半後に独立→プログラミングスクール運営/受託案件→フリーランスエンジニア&SEOコンサル→Python特化のコンテンツサイトJob Code運営中

コメント

コメントする

目次