Maison >développement back-end >Tutoriel Python >PyQuery: Python & # 39; s jQuery

PyQuery: Python & # 39; s jQuery

William Shakespeare
William Shakespeareoriginal
2025-03-01 10:22:09561parcourir

Dans ce tutoriel, vous aurez un aperçu de l'objet PyQuery est similaire à ce que vous obtenez avec $ () lors de l'utilisation de la bibliothèque jQuery. Tout comme la méthode html () dans PyQuery, où vous pourrez obtenir ou définir le contenu HTML de l'élément sélectionné.

Actuellement, l'objet de page Web est représentatif de l'ensemble du document, donc il renvoie le balisage de la page entière:

print(webpage.html())<br><br>'''<br><head><br><meta charset="utf-8"/><br><title>A Simple Webpage</title><br><meta name="viewport" content="width=device-width, initial-scale=1"/><br></head><br><br><body><br>    <p>Hello <b>world</b>! This is a basic webpage.</p><br>    <p>Here is a list of some <i>random</i> words:</p><br>    <ul ><br>        <li>Impedimenta</li><br>        <li>Decompensation</li><br>        <li>Tergiversation</li><br>        <li>Transcendentalism</li><br>        <li>Polyphiloprogenitive</li><br>    </ul><br></body><br>'''<br>

Allons-nous vouloir obtenir le marquage de la première Page Web Objectif. Voici un exemple:

print(webpage("p").html())<br><br>'''<br>Hello <b>world</b>! This is a basic webpage.<br>'''<br>

Jetez maintenant un œil au code suivant, où nous allons d'abord définir le HTML pour notre sélecteur en utilisant la méthode html () .

from pyquery import PyQuery as pq<br><br>webpage = pq(filename = 'document.html')<br><br>print(webpage("p").html())<br>'''<br>Hello <b>world</b>! This is a basic webpage.<br>'''<br><br>webpage("p").html("Hello <b>world</b>! I have changed this paragraph.")<br><br>print(webpage("p").html())<br>'''<br>Hello <b>world</b>! I have changed this paragraph.<br>'''<br>

Comme vous pouvez le voir, il était très pour nous de manipuler le HTML des étiquettes particulières. Voyons ce que nous pouvons changer d'autre.

Manipulation d'attribut à l'aide de PyQuery

PyQuery essaie de refléter l'API jQuery aussi étroitement que possible. Cela signifie que vous avez accès à une méthode d'attribut appelée Class Attribut à partir de la liste. Nous utiliserons également la méthode att () pour ajouter un ensemble de classes à notre méthode ATR () à PyQuery définit également la valeur d'attribut pour tous les éléments correspondants au lieu de la première méthode. Éléments, vous pouvez également envisager d'utiliser les méthodes de SuppeClass ()

, qui ajouteront ou supprimeront respectivement une classe CSS. Vous pouvez également utiliser les noms de méthode retire_class ()

si vous êtes plus à l'aise de travailler avec la notation de soulignement.

Voici un exemple:
webpage("p").eq(0).attr("class", "greeting hello-message")<br>

Vous pouvez également vous débarrasser de tous les attributs attribués à un élément en utilisant la méthode add_attr ()

La méthode est servie par Font Size

à CSS ()

La méthode est servie par FONTTAGNE
webpage("p").eq(0).attr("class", "greeting hello-message")<br># 

Hello world! This is a basic webpage.



webpage("p").eq(0).remove_class("greeting")
#

Hello world! This is a basic webpage.



webpage("p").eq(0).add_class("first-message")
#

Hello world! This is a basic webpage.


à CSS ()

La méthode est servie par Font Size à CSS () La méthode est servie par Font Size à CSS () La méthode PyQue est la similitude > à css () Celui à jQuery. Après avoir mis à jour les styles, nous avons enregistré le nouveau balisage vers un fichier appelé

Updated_markup.html

. Vous pouvez également faire de même après avoir apporté une variété de modifications à la majoration.

Création, supprimer et ajouter des éléments Vous vous souvenez peut-être que notre exemple de document HTML contient une liste de mots. Pouvons-nous étendre la liste des mots? Bien sûr, nous le pouvons. Tout ce que vous avez à faire est d'utiliser les méthodes prend ()

. La méthode prend ()
from pyquery import PyQuery as pq<br><br>webpage = pq(filename = 'document.html')<br><br>print(webpage("ul"))<br>'''<br><ul ><br>    <li>Impedimenta</li><br>    <li>Decompensation</li><br>    <li>Tergiversation</li><br>    <li>Transcendentalism</li><br>    <li>Polyphiloprogenitive</li><br></ul><br>'''<br><br>webpage("ul").append("<li>Myrmecophilous</li>")<br>webpage("ul").prepend("<li>Anagnorisis</li>")<br><br>print(webpage("ul"))<br>'''<br><ul ><br>    <li>Anagnorisis</li><br>    <li>Impedimenta</li><br>    <li>Decompensation</li><br>    <li>Tergiversation</li><br>    <li>Transcendentalism</li><br>    <li>Polyphiloprogenitive</li><br>    <li>Myrmecophilous</li><br></ul><br>'''<br>
annexonnera la valeur passée au nœud d'appel. Voici un exemple:

Une autre option que vous disposez pour les éléments d'appel et de mise en avant est l'utilisation des méthodes prend_to ()

. La méthode prend_to () apprendra votre nœud d'appel au nœud passé. Cependant, n'oubliez pas que vous ne pouvez pas simplement appeler ces méthodes sur une chaîne. Vous devrez les envelopper dans un objet PyQuery pour que l'appel fonctionne, comme indiqué ci-dessous:
print(webpage.html())<br><br>'''<br><head><br><meta charset="utf-8"/><br><title>A Simple Webpage</title><br><meta name="viewport" content="width=device-width, initial-scale=1"/><br></head><br><br><body><br>    <p>Hello <b>world</b>! This is a basic webpage.</p><br>    <p>Here is a list of some <i>random</i> words:</p><br>    <ul ><br>        <li>Impedimenta</li><br>        <li>Decompensation</li><br>        <li>Tergiversation</li><br>        <li>Transcendentalism</li><br>        <li>Polyphiloprogenitive</li><br>    </ul><br></body><br>'''<br>

Comme vous pouvez le voir, nous obtenons la même sortie. Vous pouvez également supprimer les nœuds de votre document en appelant simplement les enfants () et les enfants () la méthode renvoie tous les éléments qui sont des enfants directs du nœud d'appel. Dans notre cas, cela signifie tous les éléments de la liste. Après cela, nous utilisons les balises Li pour les ajouter à notre liste non ordonnée désormais vide.

Finding Elements en utilisant PyQuery

Il y a de fortes chances que vous travailliez avec des documents HTML afin d'en extraire des données. Maintenant, avant de pouvoir extraire ces données à partir de n'importe quel élément, vous devrez localiser ou trouver l'élément.

Vous pouvez simplement utiliser la méthode la plus proche () pour rechercher des éléments si vous êtes intéressé à rechercher à travers les ancêtres de cette sélector. D'autres méthodes similaires que vous pouvez utiliser sont Prev_all ()

, qui vous donnera tous les frères et sœurs qui viendront prochains ou les frères et sœurs qui sont venus respectivement. Voici un exemple:
print(webpage("p").html())<br><br>'''<br>Hello <b>world</b>! This is a basic webpage.<br>'''<br>

Extraction du contenu à partir d'une page Web

Rappelez-vous quand je vous ai dit au début du tutoriel que PyQuery peut accepter les entrées de plusieurs sources telles qu'une chaîne, un fichier ou même une URL?
from pyquery import PyQuery as pq<br><br>webpage = pq(filename = 'document.html')<br><br>print(webpage("p").html())<br>'''<br>Hello <b>world</b>! This is a basic webpage.<br>'''<br><br>webpage("p").html("Hello <b>world</b>! I have changed this paragraph.")<br><br>print(webpage("p").html())<br>'''<br>Hello <b>world</b>! I have changed this paragraph.<br>'''<br>

Dans cette section, nous laisserons PyQuery obtenir son marquage à partir d'une page à propos de Python sur WikiaDia. La page Web contient beaucoup d'informations sur Python. Nous essaierons d'en extraire une partie pour notre consommation. Voyons si nous pouvons obtenir tous les en-têtes h2

pour garder les choses simples.

Croyez-le ou non, vous n'avez besoin que de cinq lignes de code pour obtenir votre texte de tête.

h2

Vous avez peut-être remarqué que j'ai utilisé le sélecteur

H2 Span.mw-headline

au lieu d'utiliser
webpage("p").eq(0).attr("class", "greeting hello-message")<br>
H2 . En effet, l'utilisation de

h2 me donnait des titres supplémentaires qui ne faisaient pas partie du contenu principal. Vous devrez également effectuer une analyse similaire des pages Web avant de déterminer le sélecteur approprié à utiliser pour extraire les informations. J'ai déjà écrit un didacticiel sur le module Demandes de Python où nous avons utilisé le module pour télécharger des images. Une limitation de l'exemple que j'ai inclus là-bas était que nous codions durs le chemin de l'image. Utilisons la bibliothèque PyQuery pour extraire les chemins d'image d'une page Web, puis les amenez au module Demandes à télécharger. J'utiliserai la page Wikipedia sur les États-Unis pour cet exemple: Nous ne voulons pas télécharger des images des icônes d'interface utilisateur, etc. C'est pourquoi j'ai utilisé un sélecteur plus spécifique pour extraire nos images. J'obtiens le nom du fichier d'image en prenant la dernière partie du chemin d'image après l'avoir divisé le long du caractère

/

. Voici quelques-unes des images que j'ai pu extraire:

PyQuery: Python & # 39; s jQuery

Envelopper

Dans ce tutoriel, vous avez vu comment démarrer avec PyQuery, une bibliothèque Python qui vous permet de faire des questions jQuery sur des documents XML. Vous avez vu comment manipuler les attributs et les styles CSS des éléments HTML. 

Vous avez appris à créer et à ajouter des éléments aux éléments existants et à insérer de nouveaux éléments avant et après les éléments. Ce que vous avez vu dans ce tutoriel est juste la pointe de l'iceberg, et il y a beaucoup plus que cette bibliothèque a à offrir.

Pour des informations plus détaillées sur l'utilisation de cette bibliothèque, je recommande de lire la documentation officielle.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn