L’analyse syntaxique HTML est un moyen populaire de extraire les données pertinentes à partir d’un site Web. Il existe de nombreuses techniques d’analyse HTML disponibles, chacune avec différents niveaux de complexité.
L’un d’eux passe par RegEx. C’est une séquence de caractères qui définit un modèle de recherche dans un texte donné.
Cet article couvre les étapes à suivre pour analyser HTML avec RegEx—y compris des exemples de codes et quelques bonnes pratiques que vous devez connaître.
Continuer à lire.
Analyse HTML avec RegEx
L’expression régulière (RegEx) est souvent utilisée pour rechercher, extraire ou remplacer des chaînes de texte spécifiques dans un corps de données plus important, comme HTML.
Cependant, il est plus puissant et hautement personnalisable. Vous trouverez ci-dessous un exemple de modèle RegEx pour sélectionner des balises et leur contenu en HTML :
<(\w+)\s*([^>]*)>(.*?)<\/\1> |
Se familiariser avec la fonction de chaque séquence de caractères aidera à donner un sens à un modèle donné.
Voici la répartition :
<(\w+)\s* |
|
([^>]*)> |
|
(.* ?) |
|
<\/\1> |
|
RegEx peut varier en fonction du langage de programmation. Dans la section suivante, vous apprendrez à créer un Analyseur HTML avec RegEx à l’aide de scripts Python.
Comment utiliser RegEx pour analyser le HTML ?
RegEx peut être utilisé dans différents langages de programmation tels que JavaScript, C++ et C.
Python prend en charge RegEx nativement via le concernant bibliothèque, qui sera utilisée dans ce guide
???? Fait amusant: Sais-tu cela 2,1% des sites Web utilisent JavaScript comme langage de programmation côté serveur ? Pendant ce temps, moins de 0,1 % des sites utilisent C et C++. |
Avant d’entrer dans le script Python proprement dit, essayez de vous habituer à quelques exemples de modèles RegEx.
Modèles RegEx de base pour l’analyse HTML
Il n’est pas nécessaire de tout mémoriser dans le processus. Vous pouvez utiliser les modèles RegEx de base ici pour analyser le contenu HTML.
Jetez un oeil à chacun.
Pour faire correspondre les valeurs d’attribut, vous pouvez utiliser :
<\w+\s+(\w+)=[\'"]([^\'"]*)[\'"]> |
Pour extraire tous les commentaires HTML, utilisez :
Pour obtenir toutes les URL des ancres, vous pouvez exécuter :
Pour acquérir tous les e-mails dans un fichier HTML, entrez :
Il est maintenant temps de passer aux scripts suggérés en Python.
Configuration de l’analyseur HTML RegEx à l’aide de Python
Supposons que vous souhaitiez extraire toutes les URL des balises d’ancrage d’une page Web. La première partie du code consistera en l’importation de concernant et urllib.request bibliothèques.
Les deux sont natifs de Python, il n’est donc pas nécessaire de télécharger quoi que ce soit. Vous pouvez commencer par ceci :
importer concernant importer urllib.request |
Le prochain ensemble décodera la requête-réponse en UTF-8. C’est-à-dire:
définitivement get_anchor_urls(URL): essayer: réponse = urllib.request.urlopen(url) contenu_html = réponse.read().decode(‘utf-8’) |
Ensuite, la variable de modèle pour obtenir les URL des balises d’ancrage. Le re.findall() trouvera toutes les correspondances qui ne se chevauchent pas dans le contenu HTML demandé.
modèle = r‘ ancre_tags = re.findall(motif, contenu_html) |
Il y aura un problème ici. Cela capturera également les URL des scripts.
Pour résoudre ce problème, un autre modèle doit être ajouté pour capturer les URL des balises de script et les filtrer.
script_pattern = r‘ |