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.

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

Python web scraping guide

Pythonによるウェブスクレイピング – ステップバイステップガイド

Pythonを使ったウェブスクレイピングを学ぶことで、複数のウェブサイトから素早くデータを収集し、時間と労力の両方を節約できます。

Webスクレイピングに関する9の再認識すべきポイント

Webスクレイピングは、良心的な使用目的以外にも利用される可能性があるため、良くないイメージがあります。しかし、Web上に分散的に存在する価格、在庫、物件情報、ホテル空室情報などオルタナティブデータを効率的に取得するためにWebスクレイピングを正しく行うことで、商業的に様々なメリット、価値を得ることができます。同ブログでは、Webスクレイピングに関する通説に関して正し、データドリブンな意思決定に必要なデータソースのエンリッチメントに、同技術がどのように貢献することが可能かをご紹介いたします。
Web scraping with PHP

PHPによるウェブスクレイピング: ステップバイステップガイド

シンプルなPHPのウェブスクレイパーをゼロから簡単に作成し、プログラミングする方法を学びます。
solve_and_prevent_recaptcha

WebスクレイピングとCAPTCHA

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

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

データ収集に最適な Java 環境を構築するために、どのサポートツールをダウンロードしたらよいかわかりませんか?HTML からデータポイントを抽出/解析し、CSV 形式に変換する方法がわかりませんか? この投稿は、レコードを整理するのに役立ちます。
What is alternative data

オルタナティブデータとは何か、どのように利用するか

投資会社は、ソーシャルメディア、検索エンジン、消費者の需要データを監視し、ポートフォリオ内の企業が言及されたときにリアルタイムでアラートを取得しています。その方法は以下のとおりです。
How Web Scraping in Microsoft Excel Works - A Detailed Guide

Microsoft Excel を使用したウェブスクレイピングのしくみ – 詳細ガイド

ここでは、Microsoft Excel ワークシートから直接ウェブベースのデータクエリーを実行する方法について、すばやく簡単に手順を紹介します。
How to set up a proxy server on Windows 10

Windows 10でプロキシサーバーを設定する方法

このガイドでは、Windows 10でプロキシサーバーを構成するために必要な手順を説明します。この手順には、プロキシを選択する際の重要なTipsだけでなく、スクリーンショットも含まれています。