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

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

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

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

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

例えば、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

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

Web Scraping with Java Guide_large
各種ご利用方法

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

このチュートリアルでは、Gradleプロジェクトをセットアップし、HtmlUnitの依存関係をインストールする方法を学びます。その過程で、HtmlUnitについて学び、その高度な機能のいくつかを詳しく見ていきます。
3 min read
What is a data parser featured image
ウェブデータ

データ解析とは?定義、利点、および課題

この記事では、データ解析について知っておくべきことをすべて説明します。データ解析とは何か、なぜそれが重要なのか、どのようにアプローチするのが最善かを解説します。
1 min read
What is a web crawler featured image
ウェブデータ

ウェブクローラーとは?

ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。この記事では、以下の事項を説明します。 ウェブクローラーの定義 ウェブクローラーとは、インターネットをスキャンして、見つけたデータをダウンロードするソフトウェアロボットです。大半のウェブクローラーは、Google、Bing、Baidu、DuckDuckGoなどの検索エンジンによって運用されています。検索エンジンは、収集したデータに検索アルゴリズムを適用して、検索エンジンインデックスを作成します。このインデックスにより、検索エンジンはユーザーの検索クエリに基づいて、関連するリンクを提供できます。 過去の特定の時点のウェブサイトのスナップショットを提供するWay Back Machineのように、検索エンジンとは別の目的で使用されるウェブクローラーもあります。   ウェブクローラーの仕組み GoogleのGooglebotのようなウェブクローラーは、毎日、クローリングしたいウェブサイトのリストを作成して作業を開始します。これはクロールバジェットと呼ばれます。バジェットには、ページのインデックス作成に対する需要が反映されます。クロールバジェットに影響する2つの主な要因は、人気と陳腐化です。インターネット上で人気のあるURLは、インデックス内で最新の状態を保つために、より頻繁にクローリングされる傾向があります。また、ウェブクローラーはURLのインデックスが陳腐化するのを防ごうとします。 ウェブクローラーがサイトに接続すると、まずrobots.txtファイルをダウンロードして読み込みます。robots.txtファイルは、ロボットがウェブをクローリングし、コンテンツにアクセスしてインデックスを作成し、そのコンテンツをユーザーに提供する方法を規制するウェブ標準群であるロボット排除プロトコル(REP)の一部です。ウェブサイトの所有者は、サイト上でアクセスできるユーザーエージェントとアクセスできないユーザーエージェントを定義できます。また、robots.txtには、クローラーがウェブサイトに対して行うリクエストのペースを抑制するためのcrawl-delayディレクティブを定義することもできます。また、robots.txtには、サイトに関連するサイトマップも記載されているため、クローラーはすべてのページとその最終更新日時も確認できます。前回のクローラー訪問以降に変更がないページは、今回スキップされます。   ウェブクローラーは、クローリング対象のページに最終的に到達すると、そのページをブラウザーでレンダリングし、すべてのHTML、サードパーティーのコード、JavaScript、CSSを読み込みます。この情報は検索エンジンのデータベースに保存され、後でページのインデックス作成とランク付けに使用されます。また、ページ上のすべてのリンクもダウンロードします。検索エンジンのインデックスにまだ登録されていないリンクは、後でクロールするためのリストに追加されます。 robots.txtファイルに記載されているディレクティブへの準拠は任意です。ほとんどの主要な検索エンジンはrobots.txtディレクティブに従っていますが、そうでないものもあります。スパマーやボットネットなどの悪質業者は、robots.txtディレクティブを無視します。Internet Archiveのような合法的なウェブクローラーでさえ、robots.txtを無視しています。 ウェブクローラーの例 検索エンジンには複数の種類のウェブクローラーがあります。たとえば、Googleには17種類のボットがあります。 SEO対策にウェブクローラーが重要な理由 SEOの目標は、ユーザーが関連する検索語を検索したときに、自社のコンテンツが簡単に見つかるようにすることです。Googleは、コンテンツがクローリングおよびインデックス化されていない場合、コンテンツをどこにランク付けしたらよいかを知ることができません。 ウェブクローラーは、他の分野でも役立つことがあります。Eコマースサイトでは、競合他社のサイトをクローリングして、製品の品揃えや価格を分析することがよくあります。通常、この種のデータ収集は「ウェブクローリングではなくウェブスクレイピング」として知られています。ウェブスクレイピングは、特定のHTMLデータ要素に焦点を当てます。ウェブスクレイパーは非常に集中的であるのに対し、ウェブクローラーは広く網を張ってあらゆるコンテンツを収集します。ユーザーの側には、SERPデータのクローリングやスクレイピングを支援するSERP APIツールもあります。   ウェブクローラーが直面する課題 ウェブクローラーが直面する課題はいくつもあります。 課題 説明 robots.txtの制限 ウェブクローラがrobots.txtの制限に従う場合、特定のウェブページにアクセスできなかったり、任意の制限を超えるリクエストを送信できなかったりすることがあります。 IPの禁止 ウェブクローラーの中には、robots.txtの制限に従わないものもあるため、それらが他のさまざまなツールを実装してウェブクローリングを制限することがあります。ウェブサイトは、詐欺師が使用する無料データプロキシや特定のデータセンターのIPアドレスなど、悪意があることがわかっているIPアドレスを禁止することができます。 ジオロケーションの制限 一部のウェブサイトでは、ウェブサイトコンテンツにアクセスするために、特定の地域に居住していることを条件としています。たとえば、米国以外の地域からNetflix USAのコンテンツにアクセスしようとする場合です。地理的な制限の大半は、レジデンシャルプロキシネットワークを使用することで克服できます。   CAPTCHA 一部のウェブサイトでは、不審なソースからの大量のアクティビティを検出すると、リクエストの背後にいるのが本物の人間かどうかを確認するためにCAPTCHAを表示します。CAPTCHAはウェブクローラーの活動を阻害する可能性があります。多くのウェブスクレイピングソリューションは、この種のブロックを克服するためのツールや技術を備えています。これらのブロック解除ツールは、多くの場合、CAPTCHA解決ソリューションを利用します。   まとめ ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。これにより、検索エンジンは検索インデックスを作成するために必要なデータを収集し、ユーザーのクエリに対して検索結果を提供できます。多くの企業は、調査を支援する役割としてのウェブクローラーに注目しています。実際には、多くの場合、Amazon、Adidas、Airbnbのリスティングのように、1つか2つのサイトに集中しています。このようなユースケースでは、Bright DataのウェブスクレイパーIDEのようなツールが、よりニーズに適しています。  
1 min read

More from Bright Data

Datasets Icon
Get immediately structured data
Access reliable public web data for any use case. The datasets can be downloaded or delivered in a variety of formats. Subscribe to get fresh records of your preferred dataset based on a pre-defined schedule.
Web scraper IDE Icon
Build reliable web scrapers. Fast.
Build scrapers in a cloud environment with code templates and functions that speed up the development. This solution is based on Bright Data’s Web Unlocker and proxy infrastructure making it easy to scale and never get blocked.
Web Unlocker Icon
Implement an automated unlocking solution
Boost the unblocking process with fingerprint management, CAPTCHA-solving, and IP rotation. Any scraper, written in any language, can integrate it via a regular proxy interface.

Ready to get started?