Maison >développement back-end >Tutoriel Python >Comment utiliser la belle soupe pour analyser HTML?
La belle soupe est une bibliothèque Python conçue pour analyser les documents HTML et XML. Il crée une arborescence d'analyse à partir du HTML donné, vous permettant de naviguer facilement, de rechercher et de modifier les données. Pour l'utiliser, vous devez d'abord l'installer à l'aide de PIP: PIP Install BeautifulSoup4
. Ensuite, vous pouvez l'importer dans votre script Python et l'utiliser pour analyser le contenu HTML. Voici un exemple de base:
<code class="python"> à partir de BS4 Import BeautifulSoup Import Demandes # Reprochez le contenu html (Remplacez par votre URL) url = & quot; https: //www.example.com" Response = requers.get (URL) Response.RAISE_FOR_STATUS () # Richer httperror pour les mauvaises réponses (4xx ou 5xx) html_content = réponse.Content # Analyser la soupe HTML = BeautifulSoup (HTML_Content, & quot; html.parser & quot;) # Impreffe Le title TAG PRINT (soup.find_all (& quot; p & quot;)) # imprime toutes les balises de paragraphe </code>
Ce code récupère d'abord HTML à partir d'une URL utilisant la bibliothèque demandes
(vous devrez l'installer séparément avec PIP Install Demandes
). Il utilise ensuite le constructeur BeautifulSoup
pour analyser le contenu HTML, spécifiant "html.parser" comme analyseur. Enfin, il démontre l'accès à la balise & lt; Title & gt;
et trouver toutes les balises & lt; p & gt;
. N'oubliez pas de gérer des exceptions potentielles comme les erreurs de réseau ( requêtes.exception.requestException
) de manière appropriée dans un environnement de production.
La belle soupe offre un ensemble riche de méthodes pour naviguer et extraire des données. Certains des plus courants comprennent:
find ()
et find_all ()
: ce sont les chevaux de travail de la belle soupe. find ()
Renvoie la première balise qui correspond aux critères spécifiés, tandis que find_all ()
renvoie une liste de toutes les balises correspondantes. Les critères peuvent être un nom de balise (par exemple, "p", "a"), des attributs (par exemple, {"class": "my-classe", "id": "my-id"}), ou une combinaison des deux. Vous pouvez également utiliser des expressions régulières pour une correspondance plus complexe. select ()
: Cette méthode utilise des sélecteurs CSS pour trouver des balises. Il s'agit d'un moyen puissant et concis de cibler des éléments spécifiques, en particulier lorsqu'il s'agit de structures HTML complexes. Par exemple, soup.select (& quot; .my-class p & quot;)
trouvera tous les balises & lt; p & gt;
dans des éléments ayant la classe "my-classe". get_text ()
:
attrs
: Cet attribut donne accès aux attributs de la balise en tant que dictionnaire. Par exemple, tag [& quot; href & quot;]
renvoie la valeur de l'attribut href
d'un & lt; a & gt;
tag. .next_sibling
, .previous_sibling
, etc. Ces méthodes permettent de traverser la structure HTML pour trouver des éléments connexes. Voici un exemple de démonstration class = "python"> # ... (code précédent pour obtenir de la soupe) ... first_paragraph = soup.find (& quot; p & quot;) all_paragraphs = soup.find_all (& quot; p & quot;) first_paragraph_text = first_paragraph.get_text () print (f & quothy paragraph: {first_paragraph_text} & quot;) print (f & quot; {len (all_paragraphs)} & quot;)
HTML peut être désordonnée et incohérente. Pour gérer les variations et les erreurs potentielles, considérez ces stratégies:
Essayez ... sauf
Blocks pour attraper des exceptions comme find ()
et find_all ()
pour s'adapter aux variations de la structure HTML. Au lieu de s'appuyer sur des noms de classe ou des ID spécifiques qui pourraient changer, envisagez d'utiliser plus de sélecteurs ou d'attributs généraux. attributError
. Utilisez des instructions conditionnelles (par exemple, if élément:
). strip ()
La méthode et les expressions régulières sont utiles pour cela. Exemple avec une gestion des erreurs:
<code class="python"> try: title = soup.find (& quot; title & quot;). Get_text (). Strip () print (f & quot; title: {title} & quot;) Attribut Trouvé. & quot;) </code>
Non, la belle soupe ne peut pas gérer directement le contenu rendu par JavaScript. La belle soupe fonctionne avec le HTML qui est initialement téléchargé; Il n'exécute pas JavaScript. JavaScript rend le contenu dynamiquement après le chargement de la page, donc la belle soupe ne voit que le contenu rendu javascript, vous avez besoin d'alternatives:
N'oubliez pas que les sites Web de grattage doivent toujours respecter le fichier robots.txt
du site Web et les conditions d'utilisation. Un grattage excessif peut surcharger les serveurs et conduire à la bloqué de votre adresse IP.
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!