Webスクレイピング:BeautifulSoupでHTMLベースのWebボットを構築する
Web CrapingとBeautifulSoupを使用する方法と、Webボットを作成するモジュールをリクエストしてWebデータを取得する方法について説明しています。

前の第3章で「削り取られたデータを使用してCSVファイルを書き、解析する方法」について述べたように、Webデータを指定する方法について説明します。これは、Pythonをデジタルマーケティング担当者として学びたい理由の重要な目的の1つだからです。
したがって、デジタルマーケティング担当者4のこのPythonチュートリアルでは、基本的な概念と方法を説明します。 BeautifulSoupを使用して、Webデータを指定してスクレイプするために知っておく必要があるリクエストです。この部分でHTML、CSS、およびJavaScriptを読む方法を理解する方が良いでしょう。しかし、まだ目的でない場合は、まだ問題がない場合はまったく問題ありません。また、デジタルマーケティングの目的で特定のデータを削減する方法を学ぶためのものです。
Pythonチュートリアルのレッスン中に、Ring.comをコードを書いて、すべての最新のオファーと価格をこすり落とすための例として取ります。 Pythonチュートリアルの終わりまでに、予想されるデータ要素がページ上にある場所を特定し、数分ですべてをこすります。
目次:BeautifulSoupを使用して特定のWebサイトデータをこするためのWebサイトボットを作成する
- ターゲットページのデータセクションを特定します
- 解析してこするためにデータを指定します
- ループを作成して、すべてのセクション指定されたデータをスクレイプします
- 一部のセクションで欠落データを渡します
- データをCSVファイルに保存します
- Webサイトボットの完全なPythonスクリプト
- よくある質問
ターゲットページのデータセクションを特定します
ここで見ることができるように、不規則に更新される可能性のある多くのリング製品バンドルとオファーがあります。あなたがリングリセラーまたはリングの競合他社であれば、あなたは間違いなく、製品のマーケティングと価格設定戦略を調整するのが好きです。
データの場所を見つけるには、ブラウザ開発者ツールを使用してWebソースコードを検査する必要があります。例としてChromeを使用して、製品を選択して右クリックして検査を選択できます。
見出し、サブヘッドライン、通常の価格、プロモーション価格、説明、および製品URLからのデータをこすることを目指しています。このデータスクレイピングターゲットに基づいて、私たちはコードを調べて、このセクションまたは私たちが呼ぶものを見つけようとします。
<div class =” plp-product” .......
あなたは製品情報の休息を認識していますすべて同じ部門から始まります。
<div class =” plp-product” .......
これが正しいかどうかを確認するには、方法:find()、およびfind_all()の使用を開始できます
(注:BeautifulSoupをインポートする方法、モジュールをリクエストする方法については詳しく説明していません。詳細については、以前の記事を確認してください。
Webスクレイピング – すべての関数を見つけて見つけます
まず第一に、RingWeb、Ringoffers、RingProductという変数を作成しましょう
ringweb = requests.get( 'https://ring.com/collections/offers').text
ringoffers = beautifulsoup(ringweb、 'lxml')
find()メソッドは、スクレイピングアクションを見つけ、この場所からデータの応答を取得するために使用されます。パスのように、<div class =” plp-product” …….
コードの行を書くことができます
ringproduct = ringoffers.find( 'div'、class _ = 'plp-product')
このコード行では、リングオファーの下のターゲットパスのデータを表す変数のリングプロダクトを定義します。 Pythonメソッドでは、通常、コンマを使用してHTMLソースコードを分割し、各ソースコードに単一の引用符を使用することに注意してください。クラスに関しては、class_ =を使用する必要があります。これは、class =はpythonの他の関数を表しているためです。
これを印刷してコマンドBを印刷しようとすると、これらのコード行がすでにセクションデータを取得できることがわかります。動作しています。
ring.comには、オファーページで販売するバンドルのセットが1つだけではないため、他のメソッドfind_all()を使用する必要があります。 Find()をFind_all()に置き換えるだけで、すべてのバンドルセクションデータが生成されていることがわかります。
解析してこするためにデータを指定します
この記事で前述したように、ターゲットセクションのデータと削りたい特定のデータを解析し始めます。
まず第一に、それは製品の見出しです
開発者ツールから検査して確認できます。リングは、ページH4を提供するバンドル製品の見出しのみを表しているため、コードの行を直接書き込むことができます。
見出し= ringproduct.h4.text
印刷(見出し)
Pythonでは、メソッド内のパスを除き、ドットを使用してパスを分割します。文字列データをこすると、H4の後にテキストを使用できます。
次に、そのサブヘッドラインと説明
H6を使用している2つの場所があることがわかります(サブヘッドラインと説明)。見出しとは異なるため、find()メソッドを使用して特定のH6データを見つける必要があります
Subheadline = RingProduct.Find( 'H6'、class _ = 'サブタイトルサイズxs')。
印刷(サブヘッドライン)
説明= ringproduct.find( 'h6'、class _ = 'desscription font__exlight')。
印刷(説明)
すべての製品バンドルにサブヘッドラインがあるわけではありません。 Pythonでは、スクリプトファイルの実行中のエラーを回避するために、欠落データを渡す必要があります。すぐにお話します。
次に、通常の価格と昇進価格です
PROMOTE_PRICE = RINGPRODUCT.FIND( 'SPAN'、class _ = 'Regulal-price')。テキスト
print(promote_price)
remulal_price = ringproduct.find( 'span'、class _ = 'Compart-price')。テキスト
print(remoll_price)
最後になりましたが、それは製品の着陸URLです
コードの行:
Product_url = ringproduct.a ['href']
Product_link = f'https://ring.com {Product_url} '
print(product_link)
基本的に、各製品バンドルのソースコードに表示される一意のURLは1つだけです。たとえば、製品スターターキットランディングパスは、コレクション/オファー/製品/スターターキットです。したがって、セクションでhref値をこすります[]を削ることを目指している価値を無視できます:product_url = ringproduct.a [‘href’]
ただし、これらのデータパスをファイルにこすり落とすと、ページに開いてアクセスできません。したがって、完全なURLを表示するために、f ’’を使用してdocride_urlを{}に挿入して、可変product_linkを作成し、フォーマット機能を活用できます。
Product_link = f'https://ring.com {Product_url} ’
これを印刷しようとすると、それが機能していることを証明する結果が得られます。
ループを作成して、すべてのセクション指定データをスクレイプします
これらのコード行は機能しているため、すべてのデータを大量に削るために展開できます。このためには、… in and find_allメソッドを使用する必要があります。
ringoffers.find_all( 'div'、class _ = 'plp-product')のringproductの場合:
このコードは親レベルにあるため、このコードラインとインデントの子供の線の終わりにコロンを追加する必要があります。
これを印刷しようとすると、すべての製品バンドル情報を含む以下にリストされている結果が表示されます。
一部のセクションで欠落データを渡します
すべての製品バンドルがサブヘッドラインとプロモーション価格を持っているわけではないことに注意するかもしれません。したがって、Python:Objectが属性「テキスト」からこの応答に遭遇した場合、コードのサブヘッドラインとプロモーションの価格ラインを実行しようとする場合、それは停止します。スクレイピングプロセス。
これは、すべての情報が順番で構造化されているわけではないため、コーディングの世界を反映しています。したがって、出会ったときにこれに合格することを除いて、try/を使用する必要があります。
サブヘッド:
試す:
Subheadline = RingProduct.Find( 'H6'、class _ = 'サブタイトルサイズxs')。
eとしての例外を除く:
Subheadline = none
プロモーション価格:
試す:
remulal_price = ringproduct.find( 'span'、class _ = 'Compart-price')。テキスト
eとしての例外を除く:
remulal_price = none
eを除いてeを除いて変数値をeとして設定すると、0、na」など、理解しやすいと感じるように設定できます。
私は何も設定していないので、応答の結果を見ることができます
データをCSVファイルに保存します
これで、Pythonスクリプトの準備が整いました。スクレイプされたデータをローカルファイルまたはオンラインサーバーのいずれかにすることができる場所に保存する時が来ました。
以前にこのレッスンについて話したので、CSVファイルの詳細について説明します。興味がある場合は、他の記事をご覧ください
コードが完了した後、以下のようなCSVファイルが表示され、指定されたすべてのデータを削減することを目的としています。
- PayPal (paypal.me/Easy2digital)を通じて弊社チャンネルをサポートおよび寄付を行う
- Easy2Digital YouTubeチャンネルの登録と通知ベルをオンにする。
- Easy2Digital Facebookページをフォローしていいね!を押す
- ハッシュタグ#easy2digitalを使用して、ソーシャルネットワーク上で記事を共有する
- Easy2Digitalの最新記事、動画、割引コードを受け取るために、週刊ニュースレターに登録する
- www.patreon.com/louisludigitalを通じて、独占的な特典をお楽しみいただくための月額会員に登録する
よくある質問:
Q1: BeautifulSoupとは何ですか?
A: BeautifulSoupはPythonのライブラリで、HTMLやXMLファイルからデータを取得するためのパーサーです。
Q2: BeautifulSoupはどのように使いますか?
A: BeautifulSoupを使うには、まずHTMLやXMLのデータをBeautifulSoupオブジェクトに変換する必要があります。その後、オブジェクトを操作して必要な情報を抽出することができます。
Q3: BeautifulSoupの特徴は何ですか?
A: BeautifulSoupはシンプルで使いやすいライブラリです。HTMLやXMLの構造を理解し、データを取り出すためのメソッドを提供します。また、不完全なHTMLやXMLにも対応しています。
Q4: BeautifulSoupは無料ですか?
A: はい、BeautifulSoupはオープンソースであり、無料で使用することができます。
Q5: BeautifulSoupはどのバージョンが最新ですか?
A: 最新のバージョンはBeautifulSoup4です。BeautifulSoup3は非推奨となっていますので、新規プロジェクトではBeautifulSoup4を使用することをおすすめします。
Q6: BeautifulSoupはどのようなファイル形式に対応していますか?
A: BeautifulSoupはHTMLやXMLのファイル形式に対応しています。これらの形式で書かれたウェブページやドキュメントからデータを取得することができます。
Q7: BeautifulSoupは他のプログラミング言語でも使用できますか?
A: BeautifulSoupはPythonのライブラリなので、他のプログラミング言語では直接使用することはできません。ただし、Pythonとの連携が可能な言語であれば、BeautifulSoupを使用することができます。
Q8: BeautifulSoupはWebスクレイピングに使用できますか?
A: はい、BeautifulSoupはWebスクレイピングに非常に便利なツールです。HTMLやXMLから必要なデータを取得するためのメソッドを提供しています。
Q9: BeautifulSoupのインストール方法は?
A: BeautifulSoupをインストールするには、pipコマンドを使用します。次のコマンドを実行してください:pip install beautifulsoup4
Q10: BeautifulSoupの公式ドキュメントはありますか?
A: はい、BeautifulSoupの公式ドキュメントはあります。公式サイト(https://www.crummy.com/software/BeautifulSoup/bs4/doc/)で詳細な情報を確認することができます。