Maison >développement back-end >Tutoriel Python >Comment Python peut-il récupérer les valeurs du contenu HTML généré dynamiquement ?

Comment Python peut-il récupérer les valeurs du contenu HTML généré dynamiquement ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 07:45:02643parcourir

How Can Python Retrieve Values from Dynamically Generated HTML Content?

Comment récupérer des valeurs à partir d'un contenu HTML dynamique à l'aide de Python

Lorsque vous essayez de récupérer des données à partir d'un site Web qui charge le contenu de manière dynamique, les méthodes conventionnelles utilisant La requête de Python ou les bibliothèques BeautifulSoup peuvent échouer. En effet, ces bibliothèques n'interprètent pas le code JavaScript qui génère les données.

Comprendre le problème

Dans l'exemple fourni, la page en question utilise des modèles de guidons pour créer du contenu dynamique. Lors de l'inspection de la source HTML avec les outils de développement d'un navigateur, vous pouvez trouver des espaces réservés de modèle tels que "{{formatPrice median}}" au lieu des valeurs réelles.

Solutions

Pour récupérer les valeurs réelles du contenu généré dynamiquement, vous devez utiliser des techniques qui interprètent JavaScript. Considérez les options suivantes :

  • Analyser directement AJAX JSON : Si les données sont récupérées via des requêtes AJAX, vous pouvez intercepter et analyser les réponses JSON.
  • Utilisez un interprète JavaScript hors ligne : Installez et utilisez des outils tels que SpiderMonkey ou Crowbar pour exécuter le code JavaScript et générer les éléments DOM.
  • Utilisez un outil d'automatisation du navigateur : Utilisez des pilotes comme Selenium ou Watir pour interagir avec un navigateur sans tête, exécuter JavaScript et accéder au HTML rendu.

Utilisation de Selenium avec BeautifulSoup

Pour la page d'exemple ( eve-central.com), en utilisant Selenium pour récupérer la valeur "médiane":

<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>

Ce code utilise Selenium pour charger la page et BeautifulSoup pour analyser le code HTML rendu, en extrayant les balises avec l'ID de classe spécifique et imprimer leur contenu textuel, qui inclut la valeur "médiane" souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn