Heim  >  Artikel  >  Backend-Entwicklung  >  Wie extrahiere ich dynamische HTML-Inhaltswerte mit Python?

Wie extrahiere ich dynamische HTML-Inhaltswerte mit Python?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 07:47:30237Durchsuche

How to Extract Dynamic HTML Content Values Using Python?

Werte aus dynamischen HTML-Inhalten mit Python abrufen

Beim Versuch, Daten von Websites mit dynamisch geladenen Inhalten zu extrahieren, verwenden Standard-Web-Scraping-Ansätze Bibliotheken wie urllib kann auf Einschränkungen stoßen. Dies liegt daran, dass Browser häufig JavaScript-Vorlagen verwenden, um dynamische Elemente auf der Seite darzustellen. Daher sind diese Vorlagen nicht im Roh-HTML vorhanden, das von Web-Scraping-Bibliotheken empfangen wird.

Lösung

Um dieses Problem zu beheben, stehen mehrere Optionen zur Verfügung:

  • AJAX JSON direkt analysieren: Dieser Ansatz erfordert Kenntnisse über die spezifischen verwendeten AJAX-Anfragen und das manuelle Parsen der JSON-Antwort.
  • Verwendung eines Offline-JavaScript-Interpreters: Dazu gehört die Verwendung eines Tools wie SpiderMonkey oder Crowbar, um den Renderprozess der JavaScript-Vorlage zu interpretieren und die gewünschte Ausgabe zu generieren.
  • Verwendung eines Browser-Automatisierungstools: Browser-Automatisierungstools wie Selenium oder Watir ermöglichen es Ihnen, eine Headless-Browser-Instanz zu steuern und gerendertes HTML abzurufen, das den dynamisch generierten Inhalt enthält.

Verwendung von Selenium und BeautifulSoup

Selenium bietet eine praktische Möglichkeit um den gerenderten HTML-Inhalt von einer Website abzurufen, und BeautifulSoup kann verwendet werden, um den HTML-Inhalt effizient zu analysieren. Hier ist ein modifizierter Codeausschnitt, der für die angegebene Website funktionieren sollte:

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

driver = webdriver.Firefox()
driver.get(url)

html = driver.page_source
soup = BeautifulSoup(html)

for tag in soup.find_all("span", class_="formatPrice median"):
    print(tag.text)</code>

Dieser Code verwendet die Methode find_all von BeautifulSoup, um nach bestimmten CSS-Klassennamen zu suchen, die dem gewünschten Wert entsprechen. In diesem Fall lautet der Klassenname formatPrice median.

Fazit

Durch die Verwendung von Browser-Automatisierungstools wie Selenium können Sie effektiv Werte aus dynamisch generierten HTML-Inhalten abrufen und bereitstellen eine robuste Lösung für Web-Scraping-Szenarien mit JavaScript-Vorlagen oder AJAX-basiertem Datenladen.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich dynamische HTML-Inhaltswerte mit Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn