ホームページ > バックエンド開発 > Python チュートリアル > Python は動的に生成された HTML コンテンツから値をどのように取得できますか?

Python は動的に生成された HTML コンテンツから値をどのように取得できますか?

Barbara Streisand
リリース: 2024-10-19 07:45:02
オリジナル
661 人が閲覧しました

How Can Python Retrieve Values from Dynamically Generated HTML Content?

Python を使用して動的 HTML コンテンツから値を取得する方法

コンテンツを動的に読み込む Web サイトからデータを取得しようとする場合、従来の方法では、 Python のリクエストまたは BeautifulSoup ライブラリは失敗する可能性があります。これは、これらのライブラリがデータを生成する JavaScript コードを解釈しないためです。

問題を理解する

提供されている例では、問題のページは Handlebars テンプレートを使用して、動的なコンテンツを作成します。ブラウザの開発者ツールを使用して HTML ソースを検査すると、実際の値の代わりに「{{formatPrice median}}」のようなテンプレート プレースホルダーが見つかることがあります。

ソリューション

動的に生成されたコンテンツから実際の値を取得するには、JavaScript を解釈する手法を使用する必要があります。次のオプションを検討してください:

  • AJAX JSON を直接解析する: データが AJAX リクエスト経由で取得された場合、JSON 応答をインターセプトして解析できます。
  • オフライン JavaScript インタプリタを使用する: SpiderMonkey や Crowbar などのツールをインストールして使用し、JavaScript コードを実行して DOM 要素を生成します。
  • ブラウザ自動化ツールを使用する: ドライバーを利用するSelenium や Watir のように、ヘッドレス ブラウザと対話し、JavaScript を実行し、レンダリングされた HTML にアクセスします。

BeautifulSoup で Selenium を使用する

サンプル ページ ( eve-central.com)、Selenium を使用して「中央値」値を取得します:

<code class="python">from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://eve-central.com/home/quicklook.html?typeid=34')

html = driver.page_source
soup = BeautifulSoup(html)

for tag in soup.find_all('span', class_="a-price-amount"):
    print(tag.text)</code>
ログイン後にコピー

このコードは Selenium を使用してページをロードし、BeautifulSoup を使用してレンダリングされた HTML を解析し、特定のクラス ID を持つタグを抽出し、必要な「中央値」値を含むテキスト コンテンツを出力します。

以上がPython は動的に生成された HTML コンテンツから値をどのように取得できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート