Pour vérifier si l'installation a réussi, activez le shell interactif Python et importez BeautifulSoup. Si aucune erreur n'apparaît, cela signifie que tout s'est bien passé. Si vous ne savez pas comment procéder à ce sujet, saisissez les commandes suivantes dans votre terminal.
$ pythonPour travailler avec la bibliothèque BeautifulSoup, vous devez passer en html. Lorsque vous travaillez avec de vrais sites Web, vous pouvez obtenir le HTML d'une page Web à l'aide de la bibliothèque Demandes. L'installation et l'utilisation de la bibliothèque des demandes dépassent le cadre de cet article, mais vous pouvez trouver votre chemin autour de la documentation qu'il est assez facile à utiliser. Pour cet article, nous allons simplement utiliser HTML dans une chaîne Python que nous appellerions html.
html = "" "Pour utiliser BeautifulSoup, nous l'importons dans le code en utilisant le code ci-dessous:
De BS4 Import BeautifulSoup
Cela présenterait BeautifulSoup dans notre espace de noms et nous pouvons pouvoir l'utiliser pour analyser notre chaîne.
Soup = BeautifulSoup (HTML, "LXML")Maintenant, soupe est un beau objet de type BS4.BeautifulSoup et nous pouvons pouvoir effectuer toutes les opérations de BeautifulSoup sur le soupevariable.
Jetons un coup d'œil à certaines choses que nous pouvons faire avec BeautifulSoup maintenant.
Rendre le laid, beau
Lorsque BeautifulSoup analyse HTML, ce n'est généralement pas dans le meilleur des formats. L'espacement est assez horrible. Les balises sont difficiles à trouver. Voici une image pour montrer à quoi ils ressembleraient lorsque vous pourrez imprimer le soupe:
Cependant, il y a une solution à cela. La solution donne au HTML l'espacement parfait, ce qui rend les choses belles. Cette solution est à juste titre appelée «enjoliver".
Certes, vous ne pouvez pas utiliser cette fonctionnalité la plupart du temps; Cependant, il y a des moments où vous n'avez peut-être pas accès à l'outil d'inspecter l'élément d'un navigateur Web. En ces temps de ressources limitées, vous trouverez la méthode Prettify très utile.
Voici comment vous l'utilisez:
soupe.enjoliver()
Le balisage aurait l'air correctement espacé, tout comme dans l'image ci-dessous:
Lorsque vous appliquez la méthode Prettify sur la soupe, le résultat n'est plus un type BS4.BelSoup. Le résultat est maintenant de type «Unicode». Cela signifie que vous ne pouvez pas y appliquer d'autres méthodes de groupe, mais la soupe elle-même n'est pas affectée, nous sommes donc en sécurité.
Trouver nos balises préférées
HTML est composé de balises. Il stocke toutes ses données, et au milieu de tout ce fouillis se trouve les données dont nous avons besoin. Fondamentalement, cela signifie que lorsque nous trouvons les bonnes balises, nous pouvons obtenir ce dont nous avons besoin.
Alors, comment trouvons-nous les bonnes balises? Nous utilisons les méthodes de recherche et de recherche de BeautifulSoup.
Voici comment ils fonctionnent:
Le trouver La méthode recherche la première balise avec le nom nécessaire et renvoie un objet de type BS4.élément.Étiqueter.
Le Trouver tout Méthode En revanche, recherche toutes les balises avec le nom de balise nécessaire et les renvoie comme une liste de type BS4.élément.Résultat. Tous les éléments de la liste sont de type BS4.élément.Tag, nous pouvons donc effectuer l'indexation sur la liste et continuer notre exploration de BeautifulSoup.
Voyons un code. Faisons toutes les tags div:
soupe.trouver («div»)
Nous obtiendrions le résultat suivant:
Nom:Dr Peter ParkerVérification de la variable HTML, vous remarqueriez qu'il s'agit de la première balise div.
soupe.find_all ("div")
Nous obtiendrions le résultat suivant:
[Il renvoie une liste. Si, par exemple, vous souhaitez la troisième balise DIV, vous exécutez le code suivant:
soupe.find_all («div») [2]
Il renverrait ce qui suit:
Téléphone:+12345678910
Trouver les attributs de nos balises préférées
Maintenant que nous avons vu comment obtenir nos balises préférées, que diriez-vous d'obtenir leurs attributs?
Vous pensez peut-être à ce stade: «De quoi avons-nous besoin d'attributs pour?". Eh bien, souvent, la plupart des données dont nous avons besoin seront des adresses e-mail et des sites Web. Ce type de données est généralement lié à l'hyperlien dans les pages Web, avec les liens de l'attribut «HREF».
Lorsque nous avons extrait la balise nécessaire, en utilisant les méthodes find ou find_all, nous pouvons obtenir des attributs en appliquant attribution. Cela renverrait un dictionnaire de l'attribut et sa valeur.
Pour obtenir l'attribut e-mail par exemple, nous obtenons les balises qui entourent les informations nécessaires et effectuons ce qui suit.
soupe.find_all («a») [0].attributionQui renverrait le résultat suivant:
'Href': 'Mailto: Peteparker @ Svalley.com '
Même chose pour l'attribut de site Web.
soupe.find_all («a») [1].attributionQui renverrait le résultat suivant:
'href': 'http: // pparkerworks.com '
Les valeurs renvoyées sont les dictionnaires et la syntaxe du dictionnaire normal peut être appliquée pour obtenir les clés et les valeurs.
Voyons le parent et les enfants
Il y a des balises partout. Parfois, nous voulons savoir ce que sont les étiquettes pour enfants et quelle est la balise parent.
Si vous ne savez pas déjà ce qu'est un parent et une étiquette d'enfant, cette brève explication devrait suffire: une balise parent est la balise extérieure immédiate et un enfant est l'étiquette intérieure immédiate de la balise en question.
En jetant un œil à notre HTML, la balise corporelle est l'étiquette parent de toutes les balises div. De plus, l'étiquette audacieuse et la balise d'ancrage sont les enfants des étiquettes div, le cas échéant, car toutes les balises div ne possèdent pas des balises d'ancrage.
Afin que nous puissions accéder à la balise parent en appelant le frémit-parent méthode.
soupe.trouver ("div").findparent ()
Cela rendrait l'ensemble de l'étiquette corporelle:
Pour obtenir l'étiquette des enfants de la quatrième étiquette Div, nous appelons le findchildren méthode:
soupe.find_all ("div") [4].Findchildren ()
Il renvoie ce qui suit:
[Site Internet:, pparkerworks.com]]Qu'y a-t-il pour nous?
Lors de la navigation sur les pages Web, nous ne voyons pas de balises partout à l'écran. Tout ce que nous voyons est le contenu des différentes balises. Et si nous voulons le contenu d'une balise, sans tous les supports angulaires qui me rendent la vie inconfortable? Ce n'est pas difficile, tout ce que nous ferions, c'est d'appeler get_text Méthode sur l'étiquette de choix et nous obtenons le texte dans la balise et si la balise contient d'autres balises, elle obtient également leurs valeurs de texte.
Voici un exemple:
soupe.trouver ("corps").get_text ()
Cela renvoie toutes les valeurs de texte dans la balise corporelle:
Nom: Dr Peter ParkerC'est ce que nous avons pour cet article. Cependant, il y a encore d'autres choses intéressantes qui peuvent être faites avec BeautifulSoup. Vous pouvez soit consulter la documentation ou utiliser dir (bealfulSoup) sur la coque interactive pour voir la liste des opérations qui peuvent être effectuées sur un objet BeautifulSoup. C'est tout de moi aujourd'hui, jusqu'à ce que j'écrive à nouveau.