Maison  >  Article  >  développement back-end  >  Programme Python pour extraire des chaînes entre les balises HTML

Programme Python pour extraire des chaînes entre les balises HTML

WBOY
WBOYavant
2023-08-19 09:37:191616parcourir

Programme Python pour extraire des chaînes entre les balises HTML

Les balises HTML sont utilisées pour concevoir le framework du site web. Nous transmettons des informations et téléchargeons du contenu sous la forme de chaînes contenues dans des balises. Les chaînes entre les balises HTML déterminent la manière dont l'élément est affiché et interprété par le navigateur. Par conséquent, l’extraction de ces chaînes joue un rôle essentiel dans la manipulation et le traitement des données. Nous pouvons analyser et comprendre la structure des documents HTML.

Ces chaînes révèlent les modèles et la logique cachés derrière la création de pages Web. Dans cet article, nous traiterons de ces chaînes. Notre tâche est d'extraire les chaînes entre les balises HTML.

Comprendre le problème

Nous devons extraire toutes les chaînes entre les balises HTML. Notre chaîne cible est entourée de différents types de balises et seule la partie contenu doit être récupérée. Comprenons ce problème à travers un exemple.

Scénarios d'entrée et de sortie

Considérons une chaîne -

Input:
Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"

La chaîne d'entrée se compose de différentes balises HTML et nous devons extraire la chaîne entre elles.

Output: [" This is a test string,  Let's code together "]

Comme nous pouvons le voir, les balises "

" et "

" sont supprimées et la chaîne est extraite. Maintenant que nous comprenons le problème, discutons de quelques solutions.

Utilisez l'itération et le remplacement()

Cette méthode se concentre sur l'élimination et le remplacement des balises HTML. Nous passerons une chaîne et une liste de différentes balises HTML. Après cela, nous initialiserons cette chaîne à un élément de la liste.

Nous allons parcourir chaque élément de la liste de balises et vérifier s'il existe dans la chaîne d'origine. Nous passerons une variable "pos" qui stockera la valeur de l'index et pilotera le processus d'itération.

Nous utiliserons la méthode "replace()" pour remplacer chaque balise par un espace et obtenir une chaîne sans la balise HTML.

La traduction chinoise de

Exemple

est :

Exemple

Voici un exemple pour extraire des chaînes entre les balises HTML -

Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"
tags = ["<h1>", "</h1>", "<p>", "</p>", "<b>", "</b>", "<br>"]
print(f"This is the original string: {Inp_STR}")
ExStr = [Inp_STR]
pos = 0

for tag in tags:
   if tag in ExStr[pos]:
      ExStr[pos] = ExStr[pos].replace(tag, " ")
pos += 1

print(f"The extracted string is : {ExStr}")

Sortie

This is the original string: <h1>This is a test string,</h1><p>Let's code together</p>
The extracted string is : [" This is a test string,  Let's code together "]

Utilisez le module d'expression régulière + findall()

Dans cette méthode, nous utiliserons le module d'expression régulière pour faire correspondre un modèle spécifique. Nous passerons une expression régulière : "(.*?)"+tag+">", qui représente le motif cible. Ce mode est conçu pour capturer les balises d'ouverture et de fermeture. Ici, "tag" est une variable dont la valeur est obtenue à partir de la liste des balises par itération.

La fonction "findall()" est utilisée pour rechercher toutes les occurrences d'un motif dans une chaîne brute. Nous ajouterons toutes les "correspondances" à une nouvelle liste en utilisant la méthode "extend()". De cette façon, nous extrairons la chaîne contenue dans la balise HTML.

La traduction chinoise de

Exemple

est :

Exemple

Voici un exemple -

import re
Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"
tags = ["h1", "p", "b", "br"]
print(f"This is the original string: {Inp_STR}")
ExStr = []

for tag in tags:
   seq = "<"+tag+">(.*?)</"+tag+">"
   matches = re.findall(seq, Inp_STR)
   ExStr.extend(matches)
print(f"The extracted string is: {ExStr}")

Sortie

This is the original string: <h1>This is a test string,</h1><p>Let's code together</p>
The extracted string is: ['This is a test string,', "Let's code together"]

Utilisez la fonction itération et find()

Dans cette méthode, nous utiliserons la méthode "find()" pour obtenir la première occurrence des balises d'ouverture et de fermeture dans la chaîne d'origine. Nous allons parcourir chaque élément de la liste de balises et récupérer sa position dans la chaîne.

Une boucle While sera utilisée pour continuer la recherche de balises HTML dans la chaîne. Nous allons créer une condition pour vérifier s'il y a des balises incomplètes dans la chaîne. À chaque itération, la valeur de l'index sera mise à jour pour trouver la prochaine occurrence de balises d'ouverture et de fermeture.

Les valeurs d'index de toutes les balises d'ouverture et de fermeture sont stockées et une fois la chaîne entière mappée, nous utilisons le découpage de chaîne pour extraire la chaîne entre les balises HTML.

La traduction chinoise de

Exemple

est :

Exemple

Voici un exemple -

Inp_STR = "<h1>This is a test string,</h1><p>Let's code together</p>"
tags = ["h1", "p", "b", "br"]
ExStr = []
print(f"The original string is: {Inp_STR}")

for tag in tags:
   tagpos1 = Inp_STR.find("<"+tag+">")
   while tagpos1 != -1:
      tagpos2 = Inp_STR.find("</"+tag+">", tagpos1)
      if tagpos2 == -1:
         break
      ExStr.append(Inp_STR[tagpos1 + len(tag)+2: tagpos2])
      tagpos1 = Inp_STR.find("<"+tag+">", tagpos2)

print(f"The extracted string is: {ExStr}")

Sortie

The original string is: <h1>This is a test string,</h1><p>Let's code together</p>
The extracted string is: ['This is a test string,', "Let's code together"]

Conclusion

Dans cet article, nous avons abordé de nombreuses façons d'extraire des chaînes entre les balises HTML. Commençons par une solution plus simple, localisant et remplaçant les balises par des espaces. Nous avons également utilisé le module d'expression régulière et sa fonction findall() pour trouver des modèles correspondants. Nous avons également découvert la méthode find() et l'application du découpage de chaînes.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer