Python を使用して動的 HTML コンテンツから値を取得する方法
コンテンツを動的に読み込む Web サイトからデータを取得しようとする場合、従来の方法では、 Python のリクエストまたは BeautifulSoup ライブラリは失敗する可能性があります。これは、これらのライブラリがデータを生成する JavaScript コードを解釈しないためです。
問題を理解する
提供されている例では、問題のページは Handlebars テンプレートを使用して、動的なコンテンツを作成します。ブラウザの開発者ツールを使用して HTML ソースを検査すると、実際の値の代わりに「{{formatPrice median}}」のようなテンプレート プレースホルダーが見つかることがあります。
ソリューション
動的に生成されたコンテンツから実際の値を取得するには、JavaScript を解釈する手法を使用する必要があります。次のオプションを検討してください:
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 サイトの他の関連記事を参照してください。