この美しいスープPythonチュートリアルでウェブサイトをスクレイピング

BeautifulSoupはオープンソースのPythonライブラリです。ナビゲートパーサーを使用して、XMLファイルとHTMLファイルのコンテンツをスクレイピングします。いくつかの分析目的でデータが必要です。ただし、PythonとWebスクレイピングを初めて使用する場合は、PythonのBeautifulSoupライブラリをWebスクレイピングプロジェクトで試す価値があります。

PythonのオープンソースのBeautifulSoupライブラリを使用すると、プロセスを最大限に制御しながら、Webページの任意の部分または要素をスクレイピングすることでデータを取得できます。この記事では、BeautifulSoupを使用してWebサイトをスクレイピングする方法について説明します。

美しいスープをインストールして使い始める方法

先に進む前に、このBeautiful Soupチュートリアル記事では、Python3とBeautifulSoupの最新バージョンであるbeautifulsoup4を使用します。プロジェクトとそのパッケージをローカルマシン上のものから分離するために、Python仮想環境作成していることを確認してください。

開始するには、仮想環境にBeautifulSoupライブラリをインストールする必要があります。Beautiful Soupは、すべてのオペレーティングシステムでPyPiパッケージとして利用できるため、ターミナルからpip installbeautifulsoup4コマンドを使用してインストールできます。

ただし、DebianまたはLinuxを使用している場合は、上記のコマンドは引き続き機能しますが、apt-get install python3-bs4を実行することにより、パッケージマネージャーを使用してインストールできます。

BeautifulSoupはURLを直接取得しません。既製のHTMLまたはXMLファイルでのみ機能します。つまり、URLを直接渡すことはできません。この問題を解決するには、Beautiful Soupにフィードする前に、Pythonのリクエストライブラリを使用してターゲットWebサイトのURLを取得する必要があります。

そのライブラリをスクレーパーで使用できるようにするには、ターミナルからpip installrequestsコマンドを実行します

XMLパーサーライブラリを使用するには、pip installlxmlを実行してインストールします。

スクレイピングしたいWebページを調べます

なじみのないWebサイトをスクレイピングする前に、その要素を調べることをお勧めします。これを行うには、ブラウザを開発者モードに切り替えます。Google Chromeを使用している場合、ChromeDevTools使用するのは非常に簡単です。

ただし、Webページを調べて、そのHTMLタグ、属性、クラス、およびIDについて詳しく知る必要があります。これを行うと、Webページのコア要素とそのコンテンツタイプが公開されます。

また、Webサイトから必要な正確なデータを取得するために使用できる最善の戦略と、それを取得する方法を開発するのにも役立ちます。

美しいスープでウェブサイトのデータをスクレイピングする方法

すべての準備が整ったので、優先コードエディターを開き、新しいPythonファイルを作成して、選択した名前を付けます。ただし、コマンドラインからPythonを実行することに慣れていない場合は、JupyterNotebookなどのWebベースのIDEを利用することもできます。

次に、必要なライブラリをインポートします。

from bs4 import BeautifulSoup import requests

まず、リクエストライブラリがどのように機能するかを見てみましょう。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') print(website)

上記のコードを実行すると、リクエストが成功したことを示す200ステータスが返されます。それ以外の場合は、GET要求の失敗を示す400ステータスまたはその他のエラーステータスが表示されます。

かっこ内のWebサイトのURLを常にターゲットURLに置き換えることを忘れないでください。

getリクエストでWebサイトを取得したら、それをBeautiful Soupに渡します。これにより、選択した形式に応じて、組み込みのXMLまたはHTMLパーサーを使用してコンテンツをHTMLまたはXMLファイルとして読み取ることができます。

この次のコードスニペットを見て、HTMLパーサーでこれを行う方法を確認してください。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') soup = BeautifulSoup(website.content, 'html.parser') print(soup)

上記のコードは、コンテンツを含むWebページのDOM全体を返します。

prettifyメソッドを使用して、より整列されたバージョンのDOMを取得することもできます。これを試して、その出力を確認できます。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.prettify())

.textメソッドを使用して要素をロードせずに、Webページの純粋なコンテンツを取得することもできます

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.text)

タグ名でウェブページのコンテンツをスクレイピングする方法

また、BeautifulSoupを使用して特定のタグのコンテンツをスクレイピングすることもできます。これを行うには、BeautifulSoupスクレーパーリクエストにターゲットタグの名前を含める必要があります。

たとえば、Webページのh2タグのコンテンツを取得する方法を見てみましょう。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.h2)

上記のコードスニペットでは、soup.h2はWebページの最初のh2要素を返し、残りは無視します。すべてのh2要素をロードするには、find_all組み込み関数とPythonのforループを使用できます。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups)

そのコードブロックは、すべてのh2要素とそのコンテンツを返します。ただし、.stringメソッドを使用すると、タグを読み込まずにコンテンツを取得できます。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups.string)

このメソッドは、任意のHTMLタグに使用できます。あなたがする必要があるのはあなたが好きなものとh2タグを置き換えることです。

ただし、タグのリストをfind_allメソッドに渡すことで、さらに多くのタグをスクレイプすることもできます。例えば、擦り傷以下のコードのブロックの内容、H2、およびタイトルタグ:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') tags = soup.find_all(['a', 'h2', 'title']) for soups in tags: print(soups.string)

IDとクラス名を使用してWebページをスクレイピングする方法

DevToolsを使用してWebサイトを検査すると、DOM内の各要素を保持しているid属性とclass属性について詳しく知ることができます。その情報を入手したら、この方法を使用してそのWebページをスクレイピングできます。これは、ターゲットコンポーネントのコンテンツがデータベースからループアウトしている場合に役立ちます。

idおよびclassスクレーパーにはfindメソッドを使用できます。異なりfind_all反復可能オブジェクトを返すメソッド、検索方法は、単一非反復可能なターゲット、上で動作ID、この場合です。したがって、forループを使用する必要はありません。

idを使用して以下のページのコンテンツをスクレイピングする方法の例を見てみましょう。

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') id = soup.find(id = 'enter the target id here') print(id.text)

クラス名に対してこれを行うには、idclassに置き換えます。ただし、クラスを直接作成すると、Pythonがそれをキーワードと見なすため、構文が混乱します。このエラーを回避するには、クラスの前に次のようにアンダースコアを記述する必要があります:class_

基本的に、IDを含む行は次のようになります。

my_classes = soup.find(class_ = 'enter the target class name here') print(my_classes.text)

ただし、対応するIDまたはクラスを使用して特定のタグ名を呼び出すことにより、Webページをスクレイピングすることもできます。

data = soup.find_all('div', class_ = 'enter the target class name here') print(data)

美しいスープで再利用可能なスクレーパーを作る方法

クラスを作成し、以前のすべてのコードをそのクラスの関数にまとめて、いくつかのタグとそのIDのコンテンツを取得する再利用可能なスクレーパーを作成できます。これを行うには、URL、2つのタグ名、およびそれらに対応するIDまたはクラスの5つの引数を受け入れる関数を作成します。

eコマースWebサイトからシャツの価格を取得したいとします。以下のスクレーパークラスの例では、価格タグとシャツタグを対応するIDまたはクラスとともに抽出し、それを「Price」とShirt_nameを列名として持つPandasデータフレームとして返します。

まだ行っていない場合は、ターミナルからパンダpipインストールしてください。

import pandas as pd class scrapeit: try: def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None): if not (website and tag1 and id1 and tag2 and id2)==None: try: page = requests.get(website) soup = BeautifulSoup(page.content, 'html.parser') infotag1 = soup.find_all(tag1, id1) infotag2 = soup.find_all(tag2, id2) priced = [prices.text for prices in infotag1] shirt = [shirts.text for shirts in infotag2] data = { 'Price':priced, 'Shirt_name':shirt} info = pd.DataFrame(data, columns=['Price', 'Shirt_name']) print(info) except: print('Not successful') else: print('Oops! Please enter a website, two tags and thier corresponding ids') except: print('Not successful!')

作成したスクレーパーは再利用可能なモジュールであり、インポートして別のPythonファイルで使用できます。呼び出すには引っかきそのクラスから機能を、あなたが使用scrapeit.scrape( 'ウェブサイトのURL'、 'price_tag'、 'price_id'、 'shirt_tag'、 'shirt_idを') 。URLおよびその他のパラメーターを指定しない場合、elseステートメントは指定するように要求します。

そのスケーパーを別のPythonファイルで使用するには、次のようにインポートします。

from scraper_module import scrapeit scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

注: scraper_moduleは、スクレーパークラスを保持するPythonファイルの名前です。

また、Beautiful Soupを最大限に活用する方法について詳しく知りたい場合は、BeautifulSoupのドキュメントを確認することもできます。

美しいスープは貴重なウェブスクレイピングツールです

Beautiful Soupは、スクレイピング中にデータがどのように通過するかを制御できる強力なPythonスクリーンスクレイパーです。価格設定や市場動向など、競合他社のWebデータにアクセスできるため、貴重なビジネスツールです。

この記事ではタグスクレイパーを作成しましたが、この強力なPythonライブラリを試して、より便利なスクレイピングツールを作成することもできます。


国際プログラマーの日とは何ですか?今年を祝う3つの方法

国際プログラマーの日とは何ですか?今年を祝う3つの方法

国際的なお祝いの日は、社会的問題、歴史的な日、およびそれぞれのキャリアを認識するための良い方法です。国際プログラマーの日は、プログラマーが日常生活を改善するために果たす役割を祝います。私たちが住んでいる文明の世界は、プログラマーの努力の賜物です。

GitHubコパイロット:コーディングAI

GitHubコパイロット:コーディングAI

あなたがプログラマーなら、長いプログラムを書くことに疲れ果ててしまう可能性が十分にあります(またはあなたはそうするでしょう!)そしておそらくあなたは自分自身に疑問に思ったことでしょう。

Gitで新しいブランチを作成する方法

Gitで新しいブランチを作成する方法

ブランチは、プログラミング、特にGitのバージョン管理の概念の中心です。このスターター記事では、ブランチとは何か、およびさまざまなツールを使用してブランチを作成する方法について説明します。

UbuntuにNpmとNode.jsをインストールする方法を学ぶ

UbuntuにNpmとNode.jsをインストールする方法を学ぶ

Node.jsは、事実上、オープンソースのクロスプラットフォームJavaScriptランタイム環境です。Node.jsを有効にすると、ブラウザーを開くことを心配することなく、UbuntuマシンでJavaScriptを実行できます。ChromeのV8JavaScriptエンジン上に構築されており、Linuxにさまざまな方法でインストールできます。

Pythonsカレンダーモジュールの使用方法

Pythonsカレンダーモジュールの使用方法

Pythonには、特定の日または月のコードを操作できる組み込みのカレンダーモジュールが用意されています。たとえば、これを使用して、1年のすべての暦月の文字列を出力できます。

9つの最高のオンラインAPIテストツール

9つの最高のオンラインAPIテストツール

API機能のテスト、実行時の動作の評価、セキュリティの検証など、自動化されたAPIテストツールを使用すると、退屈なコードを記述せずに技術を操作できます。プログラマーではないが、プログラミングチームに推奨する前にAPIをテストしたい場合でも、これらは便利です。

Visual Studio 2022と2019:今すぐアップグレードする必要がありますか?説明

Visual Studio 2022と2019:今すぐアップグレードする必要がありますか?説明

今年の初めに、マイクロソフトはVisual Studio2022のプレビューバージョンをワイルドプログラミングの世界にリリースしました。これは良い知らせです!これは非常に人気のあるIDEですが、それが繁栄するDevOpsエコシステムの変化のペースを考えると、調整またはおそらくオーバーホールが必要です。

最初のASP.NETWebアプリケーション:開始方法

最初のASP.NETWebアプリケーション:開始方法

ASP.NETは、Webアプリとサービスを構築するためのMicrosoftの無料のクロスプラットフォームフレームワークです。ASP.NETプラットフォームは、さまざまなアプリケーションの構築に使用されるツール、プログラミング言語、およびライブラリの開発者プラットフォームである.NETの拡張機能です。

JavaScriptのイテレータとジェネレータの概要

JavaScriptのイテレータとジェネレータの概要

2015年以来、EcmaScript6(ES6)はJavaScriptコーディングの実践に多くの進歩をもたらしました。多くの最新の概念がJavaScriptに導入され、コーディングエクスペリエンスが大幅に向上しました。この記事では、JavaScriptのイテレーターとジェネレーターについて学習します。

WordPressの投稿にツイートを埋め込む方法

WordPressの投稿にツイートを埋め込む方法

WordPressの投稿にサードパーティのサービスを埋め込むことは、訪問者の興味を引くための刺激的な方法です。埋め込まれたコンテンツは、スキャンを容易にする視覚的な手がかりも提供します。WordPressにより、このタイプのコンテンツを簡単に追加できるようになりました。

SQLとNoSQL:次のプロジェクトに最適なデータベースは何ですか?

SQLとNoSQL:次のプロジェクトに最適なデータベースは何ですか?

SQLとNoSQL:次のプロジェクトに最適なデータベースは何ですか?

PythonをWindowsのPATH変数に追加する方法

PythonをWindowsのPATH変数に追加する方法

ターミナルからPythonを実行することは避けられないことがよくあります。ただし、PythonをWindows 10に初めてインストールした場合、Windowsターミナルを介して実行できるのは、PythonがWindowsPATH環境変数に追加されている場合のみです。

Pythonをコマンドライン計算機として使用する方法

Pythonをコマンドライン計算機として使用する方法

コンピューターでグラフ電卓を使用できますが、Pythonプログラミング言語インタープリターは卓上電卓を兼ねることができます。公式チュートリアルで言及されているほど、Pythonコミュニティで人気のあるランニングジョークです。Pythonを電卓として使用する方法は次のとおりです。

MongoDBでデータベースとコレクションを作成する方法

MongoDBでデータベースとコレクションを作成する方法

SQLデータベースエンジンはデータをテーブルに編成しますが、MongoDBはそのデータをコレクションに格納します。ただし、従来のエンジンと同様に、データベースという用語を使用して、組織の最高レベルを指します。

レスポンシブウェブデザインの原則

レスポンシブウェブデザインの原則

今日では、ブラウザやデバイスに応じてユーザーインターフェイスを調整するウェブサイトやアプリを作成するのが一般的です。この目標を達成するには、2つのアプローチがあります。1つ目は、デバイスごとに異なるバージョンのWebサイトまたはアプリを作成することです。しかし、それは非効率的であり、予測できないエラーにつながる可能性があります。

npkillを使用してノードモジュールフォルダを削除する方法

npkillを使用してノードモジュールフォルダを削除する方法

Node.jsは、Webブラウザーの外部でJavaScriptを実行できるJavaScriptランタイム環境であり、あらゆる種類のアプリケーションを開発するための一般的な選択肢となっています。その人気の一部は、開発者のエクスペリエンスを容易にするためにそこにある多数のNPMパッケージによるものです。

例で説明されたCSSボックスモデル

例で説明されたCSSボックスモデル

すばらしいWebページのレイアウトを作成する場合は、余白、境界線、パディング、およびコンテンツについて知っておく必要があります。画像であろうとテキストであろうと、Webデザインのすべての要素は、これらのプロパティを持つボックスを使用します。ボックスモデルをいじって、複雑なレイアウトを簡単に作成できます。この記事では、CSSボックスモデルを分析し、これらのプロパティの使用方法を実際の例とともに示します。

HerokuでPythonWebサイトを無料でホストする方法

HerokuでPythonWebサイトを無料でホストする方法

つまり、Pythonを使用して単純なポートフォリオWebサイトを完成させたところですが、無料のホスティングを使用してそれを立ち上げたいと考えています。Herokusの無料ホスティングについて聞いたことがありますが、関連する技術を完全には理解していません。

Python String format()メソッドはどのように機能しますか?10例

Python String format()メソッドはどのように機能しますか?10例

データベースクエリであろうと数学演算の結果であろうと、Python文字列形式の方法は、結果をユーザーに提示するためのより動的で魅力的な方法を提供します。

PythonとJavaScriptを使用してAPIをテストする方法

PythonとJavaScriptを使用してAPIをテストする方法

アプリケーションプログラミングインターフェイス(API)を選択することと、それを使用できるかどうかを決定することの間の細い線です。ほとんどのRESTAPIには汎用アーキテクチャがあり、共通のリクエストパスをスレッド化します。しかし、そこにあるいくつかのAPIは標準から逸脱しています。その結果、それらは使いにくくなります。

国際プログラマーの日とは何ですか?今年を祝う3つの方法

国際プログラマーの日とは何ですか?今年を祝う3つの方法

国際的なお祝いの日は、社会的問題、歴史的な日、およびそれぞれのキャリアを認識するための良い方法です。国際プログラマーの日は、プログラマーが日常生活を改善するために果たす役割を祝います。私たちが住んでいる文明の世界は、プログラマーの努力の賜物です。

GitHubコパイロット:コーディングAI

GitHubコパイロット:コーディングAI

あなたがプログラマーなら、長いプログラムを書くことに疲れ果ててしまう可能性が十分にあります(またはあなたはそうするでしょう!)そしておそらくあなたは自分自身に疑問に思ったことでしょう。

Gitで新しいブランチを作成する方法

Gitで新しいブランチを作成する方法

ブランチは、プログラミング、特にGitのバージョン管理の概念の中心です。このスターター記事では、ブランチとは何か、およびさまざまなツールを使用してブランチを作成する方法について説明します。

UbuntuにNpmとNode.jsをインストールする方法を学ぶ

UbuntuにNpmとNode.jsをインストールする方法を学ぶ

Node.jsは、事実上、オープンソースのクロスプラットフォームJavaScriptランタイム環境です。Node.jsを有効にすると、ブラウザーを開くことを心配することなく、UbuntuマシンでJavaScriptを実行できます。ChromeのV8JavaScriptエンジン上に構築されており、Linuxにさまざまな方法でインストールできます。

Pythonsカレンダーモジュールの使用方法

Pythonsカレンダーモジュールの使用方法

Pythonには、特定の日または月のコードを操作できる組み込みのカレンダーモジュールが用意されています。たとえば、これを使用して、1年のすべての暦月の文字列を出力できます。

9つの最高のオンラインAPIテストツール

9つの最高のオンラインAPIテストツール

API機能のテスト、実行時の動作の評価、セキュリティの検証など、自動化されたAPIテストツールを使用すると、退屈なコードを記述せずに技術を操作できます。プログラマーではないが、プログラミングチームに推奨する前にAPIをテストしたい場合でも、これらは便利です。

Visual Studio 2022と2019:今すぐアップグレードする必要がありますか?説明

Visual Studio 2022と2019:今すぐアップグレードする必要がありますか?説明

今年の初めに、マイクロソフトはVisual Studio2022のプレビューバージョンをワイルドプログラミングの世界にリリースしました。これは良い知らせです!これは非常に人気のあるIDEですが、それが繁栄するDevOpsエコシステムの変化のペースを考えると、調整またはおそらくオーバーホールが必要です。

最初のASP.NETWebアプリケーション:開始方法

最初のASP.NETWebアプリケーション:開始方法

ASP.NETは、Webアプリとサービスを構築するためのMicrosoftの無料のクロスプラットフォームフレームワークです。ASP.NETプラットフォームは、さまざまなアプリケーションの構築に使用されるツール、プログラミング言語、およびライブラリの開発者プラットフォームである.NETの拡張機能です。

JavaScriptのイテレータとジェネレータの概要

JavaScriptのイテレータとジェネレータの概要

2015年以来、EcmaScript6(ES6)はJavaScriptコーディングの実践に多くの進歩をもたらしました。多くの最新の概念がJavaScriptに導入され、コーディングエクスペリエンスが大幅に向上しました。この記事では、JavaScriptのイテレーターとジェネレーターについて学習します。

WordPressの投稿にツイートを埋め込む方法

WordPressの投稿にツイートを埋め込む方法

WordPressの投稿にサードパーティのサービスを埋め込むことは、訪問者の興味を引くための刺激的な方法です。埋め込まれたコンテンツは、スキャンを容易にする視覚的な手がかりも提供します。WordPressにより、このタイプのコンテンツを簡単に追加できるようになりました。