Python Beautiful Soupでスクレイピングする方法を3分で習得

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

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

  • スクレイピングの仕組みとは?
  • PythonのBeautiful Soupとは?
  • RequestsおよびBeautiful Soupのインストール
  • equestsとBeautiful Soupを使ったPythonでの簡単なスクレイピングの手順

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

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

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

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

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

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

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

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を使用します。そのためには、ターミナルで次のコードを実行します。command line syntax for pip install beautifulsoup4 for Beautiful Soup Libraries in Python

また、HTMLを解釈するパーサー、例えば「html5lib」をインストールすることもできます。
Python用のpip install requestsの構文のスクリーンショット

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

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の可能性を簡単に実証することができるからです。 レスポンス[200]があれば、これは本質的にサイトがHTTP 200 OKレスポンスコードで応答して、ページのHTMLコンテンツを送ってきたことを意味します。python code to import requests and then scrape a given URLもう一度同じリクエストをしてみましょう。今度は結果をrという変数に格納し、その内容を表示します。 このページのHTMLコード全体が出力されるはずです。ご覧の通り、非構造化されているので、Beautiful Soupは、クリーンアップし、必要なデータを取得するのに役立ちます。

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

ステップ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

Pythonを使用してBeautiful Soupでテーブルを設定するためのコマンドライン構文

これまでの内容を把握するために、表をプリントアウトして、.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 claude blog image
ウェブデータ

2025年のクロードによるウェブスクレイピング

Pythonを使ってWebスクレイピングを自動化し、構造化データを楽に抽出するClaude AIの使い方を学ぶ。
18 分読
Building AI-Ready Vector Datasets for LLMs blog image
AI

LLMのためのAI対応ベクトルデータセット構築:Bright Data、Google Gemini、Pineconeを使ったガイド

大規模言語モデル(LLM)は、私たちが情報にアクセスし、インテリジェントなアプリケーションを構築する方法を変革しています。LLMの可能性を最大限に引き出すには、特にドメイン固有の知識や独自のデータを使用する場合、高品質で構造化されたベクトルデータセットを作成することが重要です。LLMの性能と精度は、入力データの品質に直接結びついています。準備不足のデータセットは劣悪な結果をもたらす可能性があり、一方、十分にキュレーションされたデータセットはLLMを真のドメイン・エキスパートに変えることができます。 このガイドでは、AIに対応したベクターデータセットを生成するための自動パイプラインの構築方法を順を追って説明する。 課題:LLMのためのデータ収集と準備 LLMは膨大な汎用テキストコーパスで学習されますが、商品関連のクエリへの回答、業界ニュースの分析、顧客フィードバックの解釈など、特定のタスクやドメインに適用すると、不足することがよくあります。LLMを真に役立てるには、ユースケースに合わせた高品質のデータが必要です。 このデータは通常、ウェブ上に分散していたり、複雑なサイト構造の背後に隠されていたり、ボット対策によって保護されていたりする。 当社の自動ワークフローは、データセット作成の最も困難な部分を処理する合理化されたパイプラインでこれを解決します: コア技術の概要 パイプラインを構築する前に、関連するコアテクノロジーと、それぞれがワークフローをどのようにサポートしているかを簡単に見ておこう。 ブライトデータスケーラブルなウェブデータ収集 AIに対応したベクターデータセットを作成するための最初のステップは、関連性のある高品質なソースデータを収集することです。ナレッジベースやドキュメンテーションのような内部システムから得られるものもあるが、大部分は公共のウェブから得られることが多い。 しかし、最近のウェブサイトは、CAPTCHA、IPレート制限、ブラウザフィンガープリントなどの高度なボット対策メカニズムを使用しているため、大規模なスクレイピングは困難である。 Bright Dataは、データ収集の複雑さを抽象化するWeb Unlocker APIでこの課題を解決します。プロキシのローテーション、CAPTCHAの解決、ブラウザのエミュレーションを自動的に処理するため、データへのアクセス方法ではなく、データに集中することができます。 Google Gemini: インテリジェント・コンテンツ・トランスフォーメーション Geminiは、Googleによって開発された強力なマルチモーダルAIモデルのファミリーであり、様々なタイプのコンテンツを理解し処理することに優れている。私たちのデータ抽出パイプラインにおいて、Geminiは3つの重要な機能を果たします: このAIを活用したアプローチは、特に以下のような使用例において、脆弱なCSSセレクタや壊れやすい正規表現に依存する従来の方法よりも大きな利点をもたらす: AIがデータ抽出プロセスにどのような変化をもたらしているかについては、Using AI for Web Scrapingをご覧ください。スクレイピングのワークフローにGeminiを実装するための実践的なチュートリアルをお探しの場合は、包括的なガイドをご覧ください:GeminiによるWebスクレイピングをご覧ください。 文の変形意味埋め込み文の生成 エンベッディングは、高次元空間におけるテキスト(または他のデータタイプ)の密なベクトル表現である。これらのベクトルは意味的な意味を捉え、コサイン類似度やユークリッド距離のようなメトリクスを用いて測定される、類似したテキスト片を近接したベクトルで表現することを可能にする。この特性は、セマンティック検索、クラスタリング、検索拡張生成(RAG)のようなアプリケーションで重要である。 Sentence Transformersライブラリは、高品質の文や段落の埋め込みを生成するための使いやすいインターフェースを提供する。Hugging Face Transformersの上に構築され、意味タスクのために微調整された幅広い事前学習済みモデルをサポートしています。 このエコシステムで最も人気があり、効果的なモデルの1つがオールMiniLM-L6-v2である: より大きなモデルはより微妙なエンベディングを提供するかもしれないが、all-MiniLM-L6-v2は性能、効率、コストの間で非常に優れたバランスを提供する。その384次元ベクトルは ほとんどの実用的なユースケース、特に初期段階の開発やリソースに制約のある環境では、このモデルで十分すぎる。エッジケースにおける精度のわずかな低下は、通常、スピードとスケーラビリティの大幅な向上によって相殺されます。そのため、AIアプリケーションの最初のイテレーションを構築する場合や、控えめなインフラストラクチャでパフォーマンスを最適化する場合は、all-MiniLM-L6-v2を使用することをお勧めします。 Pineconeベクトル埋め込み画像の保存と検索 テキストがベクトル埋め込みデータに変換されると、それを効率的に保存、管理、照会するための専用のデータベースが必要になります。従来のデータベースはこのために設計されていません。ベクトル・データベースは、埋め込みデータの高次元の性質を扱うために特別に設計されており、RAGパイプライン、セマンティック検索、パーソナライゼーション、その他のAI駆動型アプリケーションに不可欠なリアルタイムの類似性検索を可能にします。 Pineconeは、開発者フレンドリーなインターフェイス、低レイテンシの検索パフォーマンス、完全に管理されたインフラストラクチャで知られる人気のベクトルデータベースです。ベクトル検索インフラストラクチャの複雑さを抽象化することで、複雑なベクトルインデックスと検索を効率的に管理します。主なコンポーネントは以下の通りです: Pineconeは2つのデプロイメントアーキテクチャを提供する:ServerlessとPod-Based です。ほとんどのユースケース、特に開始時や動的な負荷に対処する場合は、シンプルさとコスト効率からサーバーレスが推奨されます。 セットアップと前提条件 パイプラインを構築する前に、以下のコンポーネントが適切に設定されていることを確認する。 前提条件 各APIキーの生成方法については、以下のツール固有の設定セクションを参照してください。 必要なライブラリのインストール このプロジェクトのコアとなるPythonライブラリをインストールする: これらのライブラリーは提供している: 環境変数の設定 プロジェクトのルート・ディレクトリに.envファイルを作成し、APIキーを追加する: ブライトデータ設定 Bright DataのWeb Unlockerを使用するには: 実装例と統合コードについては、Web Unlocker GitHub […]
6 分読
AI

LLMにおけるスーパーバイズド・ファインチューニングとは?

このPythonガイドでは、概念、ツール、ワークフロー、そしてAIプロジェクトを向上させる実践的な例を取り上げています。
7 分読