PythonでウェブスクレイピングのBeautiful Soupの使い方を3分で習得

PythonのBeautiful Soupを使ったウェブスクレイピングを開始するための簡単なチュートリアルをお探しですか?最適なチュートリアルをご用意しました。このページを読んで、今すぐ開始できます。
Python user scraping the web using Beautiful Soup libraries
Rafael Levi
Rafael Levi | Senior Business Manager
05-Jan-2021

この記事では、以下の事項を説明します。

ウェブスクレイピングの仕組みとは?

ウェブページのスクレイピングとは、対象のウェブページから特定のデータを要求することです。ページをスクレイピングする際に、書かれたコードは、目的地のページをホストしているサーバーにリクエストを送ります。その後、このコードはページをダウンロードし、クローリングジョブで最初に定義されたページの要素のみを抽出します。

例えば、H3のタイトルタグでターゲットデータを探すとします。その情報を探すためのスクレイパーのコードを書くことになります。スクレーパーは3段階で機能します。

ステップ1:サイトのコンテンツをダウンロードするリクエストをサーバーに送信します。

ステップ2:ページのHTMLをフィルタリングして、目的のH3タグを探します。

ステップ3:テキストをターゲットタグにコピーし、あらかじめコードで指定したフォーマットで出力します。

多くのプログラミング言語で様々なライブラリを用いてウェブスクレイピング作業を行うことができますが、PythonとBeautiful Soupライブラリを用いることは、最も一般的で効果的な方法の一つです。以下のセクションでは、Beautiful Soupを使ったPythonでのスクレイピングの基本について説明します。

Beautiful Soupとは?

Beautiful Soupは、HTMLやXMLファイルの解析ツリーをナビゲート、検索、修正するためのシンプルなメソッドを提供します。複雑なHTMLドキュメントをPythonオブジェクトのツリーに変換します。また、自動的にユニコードに変換されるので、エンコーディングを考える必要がありません。このツールは、スクレイピングだけでなく、データのクリーニングにも役立ちます。Beautiful Soupは、標準のPythonライブラリに含まれるHTMLパーサーをサポートしていますが、lxmlやhml5libのようなサードパーティのPythonパーサーもいくつかサポートしています。

その機能の全容は、こちらでご覧ください。Beautiful Soup documentation.

RequestsおよびBeautiful Soupのインストール

Beautiful Soupをインストールするには、pipなどのPythonのインストーラーが必要です。Jupyter Labを利用することもできます。この記事では、最も便利なpipを使用します。また、HTMLを解釈するパーサー、例えば「html5lib」をインストールすることもできます。command line syntax for pip install beautifulsoup4 for Beautiful Soup Libraries in Python

また、HTMLを解釈するパーサー、例えば「html5lib」をインストールすることもできます。そのためには、ターミナルで次のコードを実行します。 command line for installing html5lib using pip install for Python
Installing Requestsscreenshot of syntax for pip install requests for python

もう一つは、以下のリンクから手動でライブラリをダウンロードする方法です。

1: Requests

2: Hml5lib

3: Beautifulsoup4

RequestsとBeautiful Soupを使ったPythonでの簡単なスクレイピングの手順

ステップ1:スクレイピングしたいページのサーバーにHTTPリクエストを送信する必要があります。サーバーは、ウェブページのHTMLコンテンツを送信することで応答します。リクエストにPythonを使うので、サードパーティのHTTPライブラリが必要で、Requestsを使うことにします。

まずRequestsライブラリをインポートして、URLに簡単なGETリクエストをします。https://www.brainyquote.com/topics/motivational-quotesを選んだのは、シンプルなHTML構造であり、Beautiful Soupの可能性を簡単に実証することができるからです。python code to import requests and then scrape a given URL レスポンス[200]があれば、これは本質的にサイトがHTTP 200 OKレスポンスコードで応答して、ページのHTMLコンテンツを送ってきたことを意味します。

もう一度同じリクエストをしてみましょう。今度は結果をrという変数に格納し、その内容を表示します。 scraping using requests and saving the URL as a variable called rこのページのHTMLコード全体が出力されるはずです。ご覧の通り、非構造化されているので、Beautiful Soupは、クリーンアップし、必要なデータを取得するのに役立ちます。

Step 2: Now that we have the HTML content, we need to parse ステップ2:HTMLのコンテンツができたので、データをパースする必要があります。そのためには、パーサーのhtml5libを使ったBeautiful Soupを使用します。importing beautiful soup from bs4 - command line syntaxBeautifulSoup()に次の2つの値を渡す必要があります。

#1: ウェブサイトのHTML文字列、「r.content」

#2: 使用するHTMLパーサー、「html5lib」

ステップ3:このとき、スクレイピングするサイトに移動したい場合。Devtoolsを開き(F12)、Elementsタブを開きます。一番上のテーブルレイヤーを探します。nice chunk of scraped data using beautiful soup

command line syntax for configuring a table in beautiful soup using python

これまでの内容を把握するために、表をプリントアウトして、.prettify()を使ってみましょう。command line for displaying the table in the console using prettify

出力は次のようになります。

今度は必要なデータを探します。この例では、引用されたテキストと著者名だけが必要です。ご覧のように、これらのデータはすべて次の場所にあります。

では、このクラスのすべてのインスタンスをループして、表にあるすべての引用符を取得してみましょう。command line for looping through all the data to find the rows you need for the table

これで、各ループインスタンスの

インスタンスだけが利用できるようになりました。ループ内でprint(row)を実行することでテストできます。
finding the alt-text inside the scraped data

「img alt」キーの情報を探しているので、引用符の変数を作成して、このデータを代入してみましょう。

assigning data to the alt text

ご覧の通り、「try」ステートメントでラップしています。この場合、1つの行に目的のデータがなくても、エラーにはならず、ループは継続されます。また、結果を「-」で分割しました。先ほど見たように、本文と著者名は「-」で区切られています。 それを利用して、両者を分離して分割してみましょう。example of alt-attribute text being filled with the data provided

これで完了です。見積もり変数は、次のようになります。

example of the data after it has applied the alt-text scrape

このプロセスの最後に、データをファイルに保存することができ、コードは次のようになるはずです。Screen shot of the final Python code and how it should look

Rafael Levi
Rafael Levi | Senior Business Manager

Rafael Levi is a senior business manager at Bright Data. He specializes in data collection automation and works closely with customers to help them achieve their goals. He firmly believes that the future of any e-business lay within data aggregation and automation.

あなたは下記にもご興味がおありかもしれません

solve_and_prevent_recaptcha

WebスクレイピングとCAPTCHA

ネットサーフィンをしていると、CAPTCHAと呼ばれるセキュリティ認証に遭遇することがあるでしょう。それは、アクセスしているのがロボットやボットではなく人間であることを確認するチェックで、「橋の写真を選んでください」のような要求がされ、ランダムに表示される画像の中から橋の写真だけをクリックする方式が一般的ではないでしょうか。
What is a proxy server & how does it work?

プロキシサーバーとは、その仕組みは?

このガイドでは、プロキシサーバーの「機能」、「現在利用できるプロキシの種類」、「プロキシとVPNの比較」など、貴社が適切なツールを選択できるよう、プロキシサーバーに関するあらゆる情報を網羅しています。
How to use Selenium for web scraping

Seleniumガイドを使用したウェブスクレイピング

10分以内にターゲットサイトからウェブデータの収集を開始してCSVファイルに結果を保存するために必要となる唯一の手順ガイドです。
What is a reverse proxy

リバースプロキシとは

リバースプロキシは、より効率的な暗号化ツールとして機能し、負荷分散の実現に役立つだけでなく、コンテンツをローカルにキャッシュし、データ消費者に迅速に配信できます。本記事はリバースプロキシーについての究極ガイドです。