I den här handledningen ser du på PyQuery
, ett Python-bibliotek som låter dig göra jQuery-frågor på XML-dokument. Synaktiskt är det ganska likt jQuery, och om du är bekant med jQuery, borde det vara lättare att följa.
För att komma igång med PyQuery
, installera Python-paketet med hjälp av PIP.
pip installation pyquery
När du har installerat PyQuery
, importera det till Python-programmet.
från pyquery import PyQuery som pq
Låt oss börja med ett grundläggande exempel på hur det fungerar. Tänk på följande HTML:
Hej världen
Passera inmatnings XML till PyQuery
objekt och du bör kunna använda jQuery-stilfrågor till den.
divMain = pq ("Hej världen")
Antar divMain
som ett jQuery-objekt och skriva ut HTML-innehållet i div.
skriv ut divMain ('# divMain'). html ()
Spara ändringarna och försök att köra programmet. Du bör ha följande produktion:
Hej världen
För att komma åt Hej världen
text från insidan spänningen, skulle koden vara:
skriv ut divMain ('# divMain'). text ()
Spara ändringarna och försök att köra koden. Du bör ha följande produktion:
Hej världen
Låt oss nu titta på hur man läser attributen med hjälp av PyQuery
bibliotek. Antag att du har ett HTML-element som visas:
Använd PyQuery
bibliotek för att läsa ovanstående HTML-innehåll.
ulMain = pq ("
Låt oss försöka få åtkomst till ID-attributet för ulMain
ul.
skriv ut ulMain.attr ('id')
Spara ovanstående ändringar och försök att köra Python-programmet. Du borde ha ID ulMain
tryckt på terminalen.
Du såg hur du ska komma åt ID-attributet för ul ulMain
. Låt oss försöka att ange ett klassnamn för detsamma ulMain
element. För att ange ett klassnamnattribut måste du ange attributnamnet och motsvarande värde enligt följande:
ulMain.attr ( 'klass', 'testclass')
Skriv ut ulMain
objekt och du borde ha elementet med klassattributet.
Du kan också lägga till och ta bort klasser direkt utan att använda attr
metod. För att lägga till en klass i elementet kan du använda metoden addClass
.
ulMain.addClass ( 'test')
För att ta bort en befintlig klass från elementet kan du utnyttja removeClass
metod.
ulMain.removeClass ( 'test')
Bortsett från attribut, skulle elementet ha några CSS egenskaper. För att lägga till eller ändra CSS-egenskaperna kan du använda css
metod och ange egenskaperna. Låt oss säga att du vill ange höjden i stilen på ul ulMain
. Följande kod skulle lägga till de önskade stilegenskaperna till elementet.
ulMain.css ( 'höjd', '100px')
Spara ovanstående ändringar och försök att exekvera Python-programmet. Du borde ha ul ulMain
tryckt tillsammans med den nya stilen.
För att lägga till flera stilar till elementet kan du ange dem enligt följande:
ulMain.css ( 'höjd': '100px', 'bredd': '100px')
Kör programmet och du borde ha de stilar som läggs till i ulMain
.
Vid skapandet av dynamisk element måste du skapa nya element och lägga till dem i det befintliga moderelementet där de ska återges. Låt oss ta en titt på hur man skapar och lägger till element med PyQuery
.
Antag att du har en huvudbehållare som heter divMain
.
divMain = pq ("")
Låt oss skapa ett nytt spännelement med PyQuery
.
span = pq ('Hej världen')
Lägg till några CSS-egenskaper i spänningen.
span.css ( 'färg': 'blå', 'font-weight': 'fetstil')
PyQuery
tillhandahåller en metod för att lägga till element i befintliga delar. Du kan använda bifoga
metod för att lägga spännelementet till div divMain
. Här är koden:
divMain.append (span) print divMain
Spara ändringarna och kör programmet. Du borde kunna se divMain
tryckt med den nyskapade spänningen som bifogas den.
Hej världen
Du använde appendmetoden för att lägga till spänningen till div. Du har en annan alternativ metod som heter append till
vilket skulle lägga noderna till värde. I ovanstående fall kan du använda metoden som så:
span.appendTo (divMain)
PyQuery
ger metoder för att hitta barn, nästa element, närmaste element etc. Det ger också metoder för att filtrera och hitta element i en viss nod.
Antag att du har en viss del av HTML som visas:
- Jade
- Jim
Hej världen
Lägg till följande HTML i PyQuery
objekt:
divMain = pq (""+"")"+""+""+"
""- Jade
"+"- Jim
"+""+"Hej världen"""+"
Låt oss använda PyQuery
för att hitta barnen till div divMain
. Lägg till följande rad kod för att skriva ut barnen till divMain
.
skriv ut divMain.children ()
När du kör programmet bör du ha följande utdata:
- Jade
- Jim
Hej världen
För att hitta det närmaste elementet till ett element kan du använda metoden närmast
. För att hitta det närmaste div-elementet till spänningen skulle koden vara:
skriv ut divMain ('span') närmaste ('div')
Ovanstående kommando skulle returnera följande utmatning:
Hej världen
en hitta
Metoden är också tillgänglig för att hitta elementen. Till exempel, för att hitta ett span inne i divMain
, du måste ringa metoden som visas:
skriv ut divMain.find ('span')
Ovanstående kommando skulle returnera spänningen.
Hej världen
Medan bifoga
gör arbetet med att lägga till element till de befintliga elementen, ibland behöver du infoga element efter eller före vissa element. PyQuery
tillhandahåller en metod för att infoga element före eller efter andra element.
Låt oss definiera ett nytt styckeelement som ska införas efter spänningen inuti divMain
div.
p = pq ('Välkommen
')
Ring Insert
metod på stycket p
element för att infoga det efter spänningen.
p.insertAfter (divMain ('span')) skriv ut divMain
Spara ovanstående ändringar och kör Python-programmet. Du bör ha följande produktion:
- Jade
- Jim
Hej världenVälkommen
På samma sätt har du insert
metod som införs före elementet. Ändra koden enligt nedan för att använda insert
metod:
p.insertBefore (divMain ('span')) skriv ut divMain
Spara ändringarna och kör programmet. Du bör kunna se följande utmatning på terminalen:
- Jade
- Jim
Välkommen
Hej världen
I den här handledningen såg du hur du började med PyQuery
, ett Python-bibliotek som låter dig göra jQuery-frågor på XML-dokument. Du såg hur man manipulerar attributen och CSS-stilerna i HTML-elementen.
Du lärde dig hur du skapar och lägger till element i befintliga element och lägger in nya element före och efter element. Det du såg i den här handledningen är bara toppen av isberget, och det finns mycket mer som detta bibliotek har att erbjuda.
För mer detaljerad information om hur du använder det här biblioteket, rekommenderar jag att du läser den officiella dokumentationen. Låt oss veta dina förslag i kommentarerna nedan.