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:
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.
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:
Voici un échantillon du HTML:
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')
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")) )
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!