Comment analyser et gratter HTML en utilisant PyQuery

Comment analyser et gratter HTML en utilisant PyQuery
"PyQuery" est un module python tiers qui vous permet d'analyser et d'extraire les données des documents "XML" et "HTML". Il est inspiré par la bibliothèque JavaScript de JQuery et dispose d'une syntaxe presque identique, vous permettant d'utiliser de nombreuses fonctions d'assistance et du code scolarisé pour analyser et manipuler l'arbre de document. Cet article couvrira un guide simple sur Pyquery qui vous aidera à démarrer avec le module.

Installation de Pyquery

Pour installer PyQuery dans Ubuntu, utilisez la commande spécifiée ci-dessous:

$ sudo apt installer python3-pyquery

Vous pouvez également installer la dernière version de PyQuery à partir du gestionnaire de packages «PIP» en exécutant les deux commandes suivantes successivement:

$ sudo apt installer python3-Pip
$ pip3 installer pyquery

Pour installer PyQuery dans d'autres distributions Linux, installez «PIP3» à partir du gestionnaire de packages et exécutez la deuxième commande mentionnée ci-dessus.

Création d'un arbre de document comparable

Avant de pouvoir analyser et extraire les données d'un document HTML, vous devez créer un arbre de document. Vous pouvez créer une arborescence de documents à partir d'un simple balisage HTML à l'aide de l'échantillon de code ci-dessous:

de Pyquery Import Pyquery comme PQ
Document = PQ ("Hello World !!")
Imprimer (document)
imprimer (type (document))

La première instruction importe la classe «Pyquery» du module «Pyquery». Ensuite, une nouvelle instance de la classe PyQuery est créée. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Bonjour le monde !!

Remarquez la deuxième ligne de la sortie. Ici, "Document", qui est une instance de la classe "PyQuery", ne renvoie pas d'objet de type de chaîne. Vous pouvez rapidement interroger toutes les méthodes disponibles pour l'instance «Document» en ajoutant la ligne supplémentaire suivante à l'échantillon de code ci-dessus:

de Pyquery Import Pyquery comme PQ
Document = PQ ("Hello World !!")
imprimer (aide (document))

Vous pouvez également parcourir l'API pour le cours de pyquery en ligne.

Pour créer une arborescence de documents à partir d'une URL, utilisez plutôt le code suivant (remplacez «URL» par votre propre adresse souhaitée):

de Pyquery Import Pyquery comme PQ
document = pq (url = 'https: // exemple.com ')
Imprimer (document)

Pour créer un fichier HTML local de formulaire de document, utilisez le code ci-dessous (remplacez la valeur du «nom de fichier» en fonction de vos besoins):

de Pyquery Import Pyquery comme PQ
document = pq (filename = 'index.html ')
Imprimer (document)

Maintenant que vous avez un arbre de documents, vous pouvez commencer à l'analyser.

Manipulation de l'arbre de document

Vous pouvez extraire des données et manipuler des arbres de documents en utilisant une variété de méthodes. Certaines des méthodes les plus courantes sont répertoriées ci-dessous avec des échantillons. Pour toutes les méthodes utilisables, reportez-vous à l'API disponible ici.

Vous pouvez utiliser la méthode «texte» pour obtenir le contenu texte d'un élément:

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour le monde !!

")
p = document ('p')
Imprimer (P.texte())

Vous pouvez choisir une balise / élément spécifique en fournissant son nom comme argument à l'instance «Document». Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Bonjour le monde !!

Vous pouvez obtenir des attributs d'une balise en utilisant la méthode «ATR». Pour ce faire, choisissez une balise que vous souhaitez analyser («p» dans ce cas) et fournissez le nom d'attribut comme argument («id» dans ce cas) ou utilisez la notation de points.

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour le monde !!

")
p = document ('p')
Imprimer (document)
Imprimer (P.att ("id"), p.att.identifiant)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Bonjour le monde !!

Vous pouvez manipuler CSS en utilisant la méthode «CSS». Pour ajouter des styles CSS à

ou toute autre balise, vous pouvez utiliser le code suivant:

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour le monde !!

")
p = document ('p')
p.CSS ("Color": "Red")
Imprimer (document)
Imprimer (P.att ("style"))

Remplacez la partie «« couleur »:« rouge »» par vos propres styles personnalisés. Après avoir exécuté l'échantillon de code ci-dessus, vous devez obtenir la sortie suivante et pouvez vérifier que CSS a été correctement appliqué:

Bonjour le monde !!


La couleur rouge

Si vous avez un cours pré-stylé, vous pouvez simplement utiliser la méthode «AddClass» pour appliquer les styles existants.

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour le monde !!

")
p = document ('p')
p.addClass ("mystyle")

Vous pouvez ajouter et représenter votre propre majoration personnalisée à l'aide de l'échantillon de code ci-dessous:

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour le monde !!

")
p = document ('p')
p.Présenter ("

Salut

")
p.ajouter("

Au revoir

")
Imprimer (document)

Remplacez les arguments dans la méthode «prend» et «ajouter» par vos propres valeurs. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Salut

Bonjour le monde !!

Au revoir

Pour supprimer le contenu d'un élément, utilisez la méthode «vide».

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour le monde !!

")
p = document ('p')
p.vide()
Imprimer (document)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Vous pouvez utiliser la méthode «filtre» pour sélectionner des éléments spécifiques lorsqu'il existe plusieurs balises du même type. Par exemple, le code ci-dessous ramasse un «

«Tag ayant un« ID »comme« bonjour »:

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour

Monde !!

")
p = document ('p')
Imprimer (P.filtre ("# bonjour"))

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Bonjour

Vous pouvez trouver plusieurs balises / éléments à la fois en utilisant la méthode «Find»:

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour

Monde !!

")
imprimer (document.trouver ('p'))

Fournir le nom d'étiquette / élément comme argument à la méthode «Find». Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Bonjour

Monde !!

Vous pouvez basculer entre les analyseurs «XML» et «HTML» en utilisant un argument «Parser» supplémentaire:

de Pyquery Import Pyquery comme PQ
document = pq ("

Bonjour

Monde !!

", parser =" html ")
Imprimer (document)

Si vous avez besoin d'une aide supplémentaire avec Pyquery, reportez-vous à sa documentation officielle et à ses exemples disponibles ici.

Conclusion

Pyquery vous permet de analyser rapidement les documents HTML en écrivant du code minimum, car il comprend de nombreuses fonctions d'assistance qui omettent complètement la nécessité d'écrire du code personnalisé. Sa «jQuery» comme la syntaxe et la structure aident également à sélectionner des éléments et des nœuds sans approfondir l'arbre de documents, surtout quand il y a beaucoup de balisage imbriqué.