Maison > développement back-end > Tutoriel Python > Stracage du Web moderne avec une belle soupe et du sélénium

Stracage du Web moderne avec une belle soupe et du sélénium

Jennifer Aniston
Libérer: 2025-02-28 10:02:09
original
812 Les gens l'ont consulté

Stracage Web: Extraction efficace des données des pages Web

Ce tutoriel explique comment le contenu de la page Web est rendu et comment le gratter à l'aide de Python, de demandes, de belle soupe et de sélénium. Nous nous concentrerons sur le grattage du contenu dynamique, en particulier les commentaires.

Quand le grattage Web est-il nécessaire?

Le grattage Web récupère, analyse et extrait automatiquement les informations des pages Web, souvent celles conçues pour l'interaction humaine. C'est un dernier recours lorsque les API ne sont pas disponibles. Considérez ces inconvénients:

  1. Fragilité: Les pages Web changent fréquemment, brisant les grattoirs.
  2. Restrictions: De nombreux sites Web interdisent le grattage.
  3. Performances: La racine de gros volumes de données peut être lente et coûteuse.

Comprendre les pages Web modernes

Examinons la structure des applications Web typiques. Nous utiliserons l'article "Introduction à Vagrant" comme exemple. Pour gratter le contenu, nous devons d'abord localiser les éléments HTML pertinents.

Affichage de la source de la page

Les navigateurs permettent à la visualisation de la source HTML. La source "Introduction à Vagrant" révèle une partie importante de JavaScript minifié sans rapport avec le contenu de l'article lui-même. Un petit extrait est illustré ci-dessous:

Modern Web Scraping With Beautiful Soup and Selenium

Voici un échantillon du HTML:

Modern Web Scraping With Beautiful Soup and Selenium

statique vs grattage dynamique

STATIC SCRATHING Ignore JavaScript, récupérant le HTML côté serveur brut. Cela fonctionne si le contenu cible est directement dans la source. Cependant, pour le contenu généré par JavaScript (contenu dynamique), cette méthode échoue. Stracage dynamique utilise des outils comme le sélénium pour interagir avec la page comme le ferait un navigateur, rendant le javascript et rendant le contenu dynamique disponible.

Stracage des commentaires dynamiques avec le sélénium

Stramissons les commentaires d'un site Web (exemple: Codecananyon Commentaires). Nous utiliserons le sélénium pour naviguer vers l'URL des commentaires:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://codecanyon.net/item/whatshelp-whatsapp-help-and-support-plugin-for-javascript/42202303/comments')
Copier après la connexion

Localisation de l'élément de commentaires nécessite d'inspecter la page (cliquez avec le bouton droit, "inspecter"). Le sélénium WebDriverWait aide à gérer le chargement asynchrone:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
url = 'http://www.c2.com/loading-page'
driver.get(url)

element = WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.ID, "loaded_element"))
)
Copier après la connexion

Conclusion

Le grattage Web est précieux lorsque les données nécessaires ne sont pas facilement disponibles via des API. Bien que difficile avec les applications Web modernes, des outils comme les demandes, la belle soupe et le sélénium simplifient le processus.

Ce tutoriel intègre les contributions d'Esther Vaati, développeur de logiciels et écrivain pour Envato TUTS.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal