首頁 > 後端開發 > Python教學 > Pyquery:Python的JQuery

Pyquery:Python的JQuery

William Shakespeare
發布: 2025-03-01 10:22:09
原創
552 人瀏覽過

在本教程中,您會查看Pyquery對像類似於使用JQuery庫時使用$()獲得的對象。就像pyquery中的html()方法一樣,您將能夠獲取或設置所選元素的HTML內容。當前,網頁對像是整個文檔的代表,因此它返回了整個頁面的標記:

>

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>
登入後複製
登入後複製

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

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>
登入後複製
登入後複製

現在查看以下代碼,我們將首先使用html()>方法為選擇器設置HTML。讓我們看看我們還能更改什麼。

>使用pyquery

pyquery屬性操縱,試圖盡可能接近jQuery api。這意味著您可以從列表中訪問稱為class

屬性的屬性方法。我們還將使用attr()
webpage("p").eq(0).attr("class", "greeting hello-message")<br>
登入後複製
登入後複製
方法在Pyquery中添加一組類,還為所有匹配元素而不是第一個。在您的元素中,您還可以考慮使用removeclass()

方法,該方法將分別添加或刪除CSS類。您也可以使用方法名稱remove_class()如果您更願意使用下劃線符號。 >

>以下是一個示例:

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.


登入後複製
登入後複製

>您也可以通過使用Add_attr()的方法來擺脫任何屬性,因為該屬性是通過font-size cys cys cys cys cys()到jQuery中的那個。更新樣式後,我們將新標記保存到了一個名為updated_markup.html 的文件中。在對標記進行各種更改之後,您也可以做同樣的事情。 創建,刪除和附加元素

>您可能會記得我們的示例HTML文檔包含一個單詞列表。我們可以擴展單詞列表嗎?當然我們可以。您需要做的就是使用Prepend()

方法。 prepent()

方法將預先將傳遞的值預先到調用節點。以下是一個示例:

您對附加和準備元素的另一個選項是使用PrepEnd_to()
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>
登入後複製
方法。 prepend_to()

方法將使您的呼叫節點預先到傳遞的節點。但是,請記住,您不能簡單地在字符串上調用這些方法。您將必須將它們包裹在Pyquery對像中以進行工作,如下所示:如您所見,我們獲得了相同的輸出。您還可以通過簡單地調用孩子()

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>
登入後複製
登入後複製
和兒童()

方法來刪除文檔中的節點。在我們的情況下,這意味著所有列表元素。之後,我們使用li 標籤將它們附加到我們現在空的無序列表中。 >使用Pyquery

查找元素,您很有可能會使用HTML文檔來處理HTML文檔,以便從中提取一些數據。現在,在您可以從任何元素提取這些數據之前,您需要找到或找到該元素。

>

>如果您有興趣通過該特定選擇器的祖先進行搜索。

>

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

,我們已經介紹了siblings()

方法。您可以使用的其他類似方法是prev_all()
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>
登入後複製
登入後複製
,它將為您提供下一步的所有兄弟姐妹或分別為之前出現的兄弟姐妹。以下是一個示例:

>從網頁中提取內容

>您還記得當我在教程開頭告訴您Pyquery可以接受多個源的輸入,例如字符串,文件,url?該網頁包含有關Python的大量信息。我們將嘗試提取一些供我們的消費。讓我們看看是否可以獲取所有 h2<code>h2級別的標題以使事情變得簡單。

相信它,您只需要五行代碼即可獲取標題文本。

>
webpage("p").eq(0).attr("class", "greeting hello-message")<br>
登入後複製
登入後複製

>您可能已經註意到我使用了Selector H2 span.mw-headline >這是因為僅使用h2 給我一些其他標題,而​​這些標題不是主要內容的一部分。在確定用於提取信息的合適選擇器之前,您還必須自己對網頁進行類似的分析。 >

我已經為Python的請求模塊編寫了一個教程,我們使用該模塊下載圖像。我包括的示例的一個局限性是我們正在努力編碼圖像的路徑。讓我們使用Pyquery庫從網頁提取圖像路徑,然後將它們饋送到請求模塊以下載。在此示例中,我將使用有關美國的Wikipedia頁面:

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.


登入後複製
登入後複製
>我們不想下載UI圖標的圖像等。這就是為什麼我使用更具體的選擇器來提取我們的圖像的原因。在沿圖像路徑的最後一部分沿

/字符分配後,我可以通過將圖像名稱命名來獲取圖像文件名。以下是我能夠提取的一些圖像:在本教程中,您看到瞭如何使用Pyquery:Python的JQuery

將其包裝

PyQuery,您看到瞭如何使用

>開始,這是一個python庫,它允許您在XML文檔上進行jQuery查詢。您看到瞭如何操縱HTML元素的屬性和CSS樣式。 

>

您學會瞭如何在現有元素上創建和附加元素,並在元素之前和之後插入新元素。您在本教程中看到的只是冰山一角,並且該庫還提供了更多內容。

>

有關使用此庫的更多詳細信息,我建議閱讀官方文檔。 。

以上是Pyquery:Python的JQuery的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板