BelleSoupe

Tutoriel Python BeautifulSoup pour les débutants

Tutoriel Python BeautifulSoup pour les débutants
Le grattage Web est d'une grande importance dans le monde d'aujourd'hui. Tout le monde a besoin de données, provenant de différentes sources, y compris des pages Web. Dans cet article, nous verrons comment analyser html avec la bibliothèque beautifulsoup. Extraire les données nécessaires d'un tas d'alphabets et de symboles, grâce à cette excellente bibliothèque, est devenu beaucoup plus facile. BeautifulSoup écrit en Python peut facilement être installé sur votre machine à l'aide de l'outil d'installation pip de Python. La commande suivante aiderait à installer la bibliothèque :

pip installer BeautifulSoup4

Pour vérifier si l'installation a réussi, activez le shell interactif Python et importez BeautifulSoup. Si aucune erreur ne s'affiche, cela signifie que tout s'est bien passé.  Si vous ne savez pas comment vous y prendre, tapez les commandes suivantes dans votre terminal.

$ python
Python 3.5.2 (par défaut, 14 sept. 2017, 22:51:06)
[CCG 5.4.0 20160609] sur Linux
Tapez "aide", "droit d'auteur", "crédits" ou "licence" pour plus d'informations.
>>> importer bs4

Pour travailler avec la librairie BeautifulSoup, il faut passer en html. Lorsque vous travaillez avec de vrais sites Web, vous pouvez obtenir le code html d'une page Web à l'aide de la bibliothèque de requêtes. L'installation et l'utilisation de la bibliothèque de requêtes dépassent le cadre de cet article, mais vous pouvez vous y retrouver dans la documentation, c'est assez facile à utiliser. Pour cet article, nous allons simplement utiliser html dans une chaîne python que nous appellerions html.

html = """

Profil de l'employé



Nom:Dr Peter Parker

Emploi:Ingénieur en apprentissage automatique

Téléphone:+12345678910


Site Internet:
pparkerworks.com



"""

Pour utiliser beautifulsoup, nous l'importons dans le code en utilisant le code ci-dessous :

de l'importation bs4 BeautifulSoup

Cela introduirait BeautifulSoup dans notre espace de noms et nous pouvons l'utiliser pour analyser notre chaîne.

soupe = BelleSoupe(html, "lxml")

À présent, soupe est un objet BeautifulSoup de type bs4.BeautifulSoup et nous pouvons effectuer toutes les opérations BeautifulSoup sur le soupevariable.

Jetons un coup d'œil à certaines choses que nous pouvons faire avec BeautifulSoup maintenant.

RENDRE LE LIGEUR, LE BEAU

Lorsque BeautifulSoup analyse du 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 imprimeriez le soupe:

Cependant, il existe une solution à ce. La solution donne au code HTML l'espacement parfait, ce qui rend les choses belles. Cette solution s'appelle à juste titre «enjoliver".

Certes, vous ne pourrez peut-être pas utiliser cette fonctionnalité la plupart du temps; Cependant, il peut arriver que vous n'ayez pas accès à l'outil d'inspection des éléments 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 semblerait correctement espacé, 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.BelleSoupe. Le résultat est maintenant de type 'unicode'. Cela signifie que vous ne pouvez pas appliquer d'autres méthodes BeautifulSoup dessus, mais la soupe elle-même n'est pas affectée, nous sommes donc en sécurité.

TROUVER NOS ÉTIQUETTES PRÉFÉRÉES

HTML est composé de balises. Il y stocke toutes ses données, et au milieu de tout ce fouillis se trouvent 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 trouver les bons tags? Nous utilisons les méthodes find et find_all de BeautifulSoup.

Voici comment ils fonctionnent :

le trouve la méthode recherche la première balise avec le nom requis et renvoie un objet de type bs4.élément.Étiqueter.

le Trouver tout d'autre part, recherche toutes les balises avec le nom de balise nécessaire et les renvoie sous forme de liste de type bs4.élément.Ensemble de résultats. Tous les éléments de la liste sont de type bs4.élément.Tag, pour que nous puissions faire l'indexation sur la liste et continuer notre exploration de la belle soupe.

Voyons un peu de code. Trouvons toutes les balises div :

soupe.trouver ("div")

On obtiendrait le résultat suivant :

Nom:Dr Peter Parker

En vérifiant la variable html, vous remarquerez qu'il s'agit de la première balise div.

soupe.find_all ("div")

On obtiendrait le résultat suivant :

[
Nom:Dr Peter Parker
,
Emploi:Ingénieur en apprentissage automatique
,
Téléphone:+12345678910
,
,
Site Internet:
pparkerworks.com
]

Il renvoie une liste.  Si par exemple vous voulez 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

RETROUVER LES ATTRIBUTS DE NOS TAGS FAVORIS

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 hyperlié dans les pages Web, avec les liens dans 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 atouts. Cela renverrait un dictionnaire de l'attribut et sa valeur.

Pour obtenir l'attribut email par exemple, on obtient le balises qui entourent les informations nécessaires et procédez comme suit.

soupe.find_all ("un")[0].atouts

Ce qui retournerait le résultat suivant :

'href': 'mailto:[email protected]'

Même chose pour l'attribut website.

soupe.find_all ("un")[1].atouts

Ce qui retournerait le résultat suivant :

'href': '
http://pparkerworks.com'

Les valeurs renvoyées sont des dictionnaires et la syntaxe normale du dictionnaire peut être appliquée pour obtenir les clés et les valeurs.

VOIR LE PARENT ET LES ENFANTS

Il y a des balises partout. Parfois, nous voulons savoir ce que sont les balises enfants et quelle est la balise parent.

Si vous ne savez pas déjà ce qu'est une balise parent et enfant, cette brève explication devrait suffire : une balise parent est la balise externe immédiate et un enfant est la balise interne immédiate de la balise en question.

En regardant notre html, la balise body est la balise parent de toutes les balises div. De plus, la balise bold et la balise d'ancrage sont les enfants des balises div, le cas échéant, car toutes les balises div ne possèdent pas de balises d'ancrage.

Nous pouvons donc accéder à la balise parent en appelant le trouverParent méthode.

soupe.trouver("div").findParent()

Cela renverrait l'intégralité de la balise body :


Nom:Dr Peter Parker

Emploi:Ingénieur en apprentissage automatique

Téléphone:+12345678910


Site Internet:
pparkerworks.com

Pour obtenir la balise children de la quatrième balise div, nous appelons la trouverEnfants méthode:

soupe.find_all("div")[4].trouverEnfants()

Il renvoie les éléments suivants :

[Site Internet:, pparkerworks.com]

QU'EST-CE QUE C'EST POUR NOUS?

Lors de la navigation sur les pages Web, nous ne voyons pas de balises partout sur l'écran. On ne voit que le contenu des différentes balises. Et si on voulait le contenu d'un tag, sans que tous les crochets angulaires rendent la vie inconfortable? Ce n'est pas difficile, tout ce que nous ferions est d'appeler get_text méthode sur la balise 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 body :

Nom : Dr Peter Parker
Poste : ingénieur en apprentissage automatique
Téléphone : +1 234 56 78 910
Courriel :[e-mail protégé]
Site Web : pparkerworks.com

CONCLUSION

C'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, soit utiliser dir(Belle Soupe) sur le shell interactif pour voir la liste des opérations réalisables sur un objet BeautifulSoup. C'est tout pour moi aujourd'hui, jusqu'à ce que j'écrive à nouveau.

Jeux HD remasterisés pour Linux qui n'ont jamais eu de version Linux plus tôt
De nombreux développeurs et éditeurs de jeux proposent une remasterisation HD d'anciens jeux pour prolonger la durée de vie de la franchise, veuillez ...
Comment utiliser AutoKey pour automatiser les jeux Linux
AutoKey est un utilitaire d'automatisation de bureau pour Linux et X11, programmé en Python 3, GTK et Qt. En utilisant ses fonctionnalités de script e...
Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...