今日のデータ主導の世界では、手動でデータを収集する従来の方法は時代遅れです。すべての机にインターネットに接続されたコンピューターがあり、ウェブは巨大なデータ ソースになりました。したがって、より効率的で時間を節約できる最新のデータ収集方法は、Web スクレイピングです。 Web スクレイピングに関しては、Python には Beautiful Soup というツールがあります。この記事では、Web スクレイピングを開始するための Beautiful Soup のインストール手順を説明します。
Beautiful Soup をインストールして使用する前に、なぜそれを選択する必要があるのかを見てみましょう。
美しいスープとは何ですか?
「人々の健康に対する新型コロナウイルスの影響」を調査していて、関連データを含むいくつかの Web ページを見つけたとしましょう。しかし、データを借用するためにワンクリックでダウンロードするオプションが提供されなかったらどうなるでしょうか?ここで美しいスープが登場します。
Beautiful Soup は、対象のサイトからデータを引き出すための Python ライブラリのインデックスの 1 つです。 HTML または XML ページからデータを取得するほうが快適です。
Leonard Richardson は、2004 年に Web をスクレイピングするための Beautiful Soup のアイデアを世に送り出しました。しかし、彼のプロジェクトへの貢献は現在も続いています。彼は、Beautiful Soup の新しいリリースをすべて自身の Twitter アカウントで誇らしげに更新しています。
Web スクレイピング用の Beautiful Soup は Python 3.8 を使用して開発されましたが、Python 3 と Python 2.4 の両方でも完全に動作します。
多くの場合、Web サイトはキャプチャ保護を使用して AI ツールからデータを救出します。この場合、Beautiful Soup の 「user-agent」 ヘッダーにいくつかの変更を加えるか、キャプチャ解決 API を使用することで、信頼できるブラウザを模倣し、検出ツールを騙すことができます。
ただし、Beautiful Soup を探索する時間がない場合、またはスクレイピングを効率的かつ簡単に実行したい場合は、この Web スクレイピング API をぜひチェックしてください。 URL を指定するだけでデータを入手できます。
すでにプログラマーである場合は、Web ページをナビゲートし、条件付き解析に基づいて必要なデータを抽出する際の構文が単純なので、スクレイピングに Beautiful Soup を使用するのは難しいことではありません。同時に初心者にも優しいです。
Beautiful Soup は高度なスクレイピングには適していませんが、マークアップ言語で書かれたファイルからデータをスクレイピングするのに最適です。
明確で詳細なドキュメントは、Beautiful Soup が提供するもう 1 つの重要なポイントです。
美しいスープをマシンに入れる簡単な方法を見つけてみましょう。
Webスクレイピング用に美しいスープをインストールする方法?
Pip – 2008 年に開発された簡単な Python パッケージ マネージャーは、現在、開発者の間で Python ライブラリや依存関係をインストールするための標準ツールです。
Pip は、最新の Python バージョンのインストールにデフォルトで付属しています。したがって、最新の Python バージョンがシステムにインストールされていれば、問題なく使用できます。
コマンド プロンプトを開き、次の pip コマンドを入力して、美しいスープを即座にインストールします。
pip install beautifulsoup4
次のスクリーンショットのようなものがディスプレイに表示されます。

一般的なエラーを回避するために、PIP インストーラーを最新バージョンに更新していることを確認してください。
pip インストーラーを最新バージョンに更新するコマンドは次のとおりです。
pip install --upgrade pip
この記事では半分をカバーすることに成功しました。
これで、マシンに Beautiful Soup がインストールされました。それでは、それを Web スクレイピングに使用する方法を見ていきましょう。
Web スクレイピング用に美しいスープをインポートして操作するにはどうすればよいですか?
Python IDE で次のコマンドを入力して、美しいスープを現在の Python スクリプトにインポートします。
from bs4 import BeautifulSoup
これで、スクレイピングに使用できる美しいスープが Python ファイルに追加されました。
美しいスープを使用して目的のデータを抽出する方法を学ぶコード例を見てみましょう。
美しい Soup に、ソース Web サイトで特定の HTML タグを検索し、それらのタグに存在するデータをスクレイピングするように指示できます。
この記事では、さまざまな企業のリアルタイムの株価を更新する Marketwatch.com を使用します。 Beautiful Soup ライブラリについて理解するために、この Web サイトからいくつかのデータを取り出してみましょう。
HTTP リクエストを受信して応答できるようにする 「requests」 パッケージと、URL から Web ページをロードする 「urllib」 をインポートします。
from urllib.request import urlopen
import requests
後で簡単にアクセスできるように、Web ページのリンクを変数に保存します。
url = 'https://www.marketwatch.com/investing/stock/amzn'
次に、「 urllib 」ライブラリの「 urlopen 」メソッドを使用して、HTML ページを変数に保存します。 URL を「 urlopen 」関数に渡し、結果を変数に保存します。
page = urlopen(url)
Beautiful Soup オブジェクトを作成し、 「html.parser」 を使用して目的の Web ページを解析します。
soup_obj = BeautifulSoup(page, 'html.parser')
これで、対象の Web ページの HTML スクリプト全体が 「soup_obj」 変数に保存されます。
先に進む前に、HTML スクリプトとタグについて詳しく知るために、対象のページのソース コードを見てみましょう。
Web ページ上の任意の場所をマウスで右クリックします。次に、以下に示すように、検査オプションが表示されます。

「検査」をクリックしてソースコードを表示します。

上記のソース コードでは、タグ、クラス、および Web サイトのインターフェイスに表示されるすべての要素に関するより具体的な情報を見つけることができます。
美しいスープの 「find」 メソッドを使用すると、要求された HTML タグを検索してデータを取得できます。これを行うには、特定のデータを抽出するメソッドにクラス名とタグを与えます。
たとえば、「Amazon.com Inc.」 Web ページに表示されているクラス名は、「h1」の下にタグ付けされた「company__name」です。この情報を「find」メソッドに入力して、関連する HTML スニペットを変数に抽出できます。
name = soup_obj.find('h1', attrs={'class': 'company__name'})
変数 name に格納されているHTMLスクリプトと必要なテキストを画面に出力してみましょう。
print(name)
print(name.text)

抽出されたデータが画面に印刷されるのを確認できます。
IMDb Web サイトの Web スクレイピング
私たちの多くは、映画を見る前に IMBb のサイトで映画の評価を調べます。このデモンストレーションでは、最高評価の映画のリストを提供し、Web スクレイピング用の美しいスープに慣れるのに役立ちます。
ステップ 1: 美しいスープとリクエスト ライブラリをインポートします。
from bs4 import BeautifulSoup
import requests
ステップ 2: コード内で簡単にアクセスできるように、スクレイピングする URL を 「url」 という変数に割り当てましょう。
「 requests 」パッケージは、URLからHTMLページを取得するために使用されます。
url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')
ステップ 3: 次のコード スニペットでは、現在の URL の HTML ページを解析して、美しいスープのオブジェクトを作成します。
soup_obj = BeautifulSoup(url.text, 'html.parser')
次の図に示すように、変数 「soup_obj 」には、目的の Web ページの HTML スクリプト全体が含まれています。

Web ページのソース コードを調べて、スクレイピングするデータの HTML スクリプトを見つけてみましょう。
抽出したい Web ページ要素の上にカーソルを置きます。次に、それを右クリックして検査オプションを選択し、その特定の要素のソース コードを表示します。次の図は、よりわかりやすくガイドします。

クラス「lister-list」には、連続する div タグのサブディビジョンとして、最高評価の映画関連データがすべて含まれています。
各ムービー カードの HTML スクリプトでは、クラス「lister-item mode-advanced」の下に、以下の画像で強調表示されているように、映画の名前、ランク、リリース年を格納するタグ「h3」があります。

注: 美しいスープの 「find」 メソッドは、指定された入力名に一致する最初のタグを検索します。 「find」 とは異なり、 「find_all」 メソッドは、指定された入力に一致するすべてのタグを検索します。
ステップ 4: 「find 」および 「find_all 」メソッドを使用して、すべての映画の名前、ランク、年の HTML スクリプトをリスト変数に保存できます。
top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')
ステップ 5: 変数 「top_movies」 に保存されている映画のリストをループし、以下のコードを使用して HTML スクリプトから各映画の名前、ランク、年をテキスト形式で抽出します。
for movie in top_movies:
movi_name = movie.a.text
rank = movie.span.text.rstrip('.')
year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
year = year.text.strip('()')
print(movi_name + " ", rank+ " ", year+ " ")
出力スクリーンショットでは、名前、ランク、リリース年を含む映画のリストを確認できます。

印刷されたデータを Python コードを使用して Excel シートに簡単に移動し、分析に使用できます。
最後の言葉
この投稿では、Web スクレイピング用の美しい Soup をインストールする方法を説明します。また、私が示したスクレイピングの例は、Beautiful Soup を始めるのに役立つはずです。
Web スクレイピング用に Beautiful Soup をインストールする方法に興味があるので、Python を使用した Web スクレイピングについて詳しく知るために、このわかりやすいガイドをチェックすることを強くお勧めします。