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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-10-19 07:45:02542ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。