<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # PyQuery 教程 > 原文: [http://zetcode.com/python/pyquery/](http://zetcode.com/python/pyquery/) PyQuery 教程展示了如何在 Python 中對 XML 文檔進行 jQuery 查詢。 ## jQuery jQuery 是一個 JavaScript 庫,用于處理 DOM。 使用 jQuery,我們可以查找,選擇,遍歷和操作 HTML 文檔的各個部分。 ## PyQuery PyQuery 是一個 Python 庫,具有與 jQuery 類似的 API。 它使用`lxml`模塊進行快速的 XML 和 HTML 操作。 該 API 盡可能類似于 jQuery。 ## 安裝 PyQuery 使用以下命令安裝 PyQuery: ```py $ sudo pip3 install pyquery ``` 我們使用`pip3`命令安裝 PyQuery 模塊。 ## HTML 文件 在示例中,我們將使用以下 HTML 文件: `index.html` ```py <!DOCTYPE html> <html> <head> <title>Header</title> <meta charset="utf-8"> </head> <body> <h2>Operating systems</h2> <ul id="mylist" style="width:150px"> <li>Solaris</li> <li>FreeBSD</li> <li>Debian</li> <li>NetBSD</li> <li>Windows</li> </ul> </body> </html> ``` ## 簡單的例子 在第一個示例中,我們使用 PyQuery 模塊獲取標頭的文本。 `header.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) text = doc("h2").text() print(text) ``` 該代碼示例打印`h2`元素的文本。 ```py from pyquery import PyQuery as pq ``` 我們從`pyquery`模塊導入`PyQuery`類。 `PyQuery`是從事工作的主要類。 ```py with open("index.html", "r") as f: contents = f.read() ``` 我們打開`index.html`文件并使用`read()`方法讀取其內容。 ```py doc = pq(contents) ``` 創建了`PyQuery`對象; HTML 數據將傳遞給構造器。 ```py text = doc("h2").text() ``` 我們選擇`h2`標簽,并使用`text()`方法獲取其文本。 ```py $ ./header.py Operating systems ``` 這是輸出。 ## 文本和 HTML 方法 `text()`方法檢索元素的文本,而`html()`方法檢索元素的 HTML 數據。 `get_list.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) text = doc("ul").text() print("\n".join(text.split())) text = doc("ul").html() print("\n".join(text.split())) ``` 我們獲得`ul`元素的文本數據和 HTML 數據。 ```py $ ./get_list.py Solaris FreeBSD Debian NetBSD Windows <li>Solaris</li> <li>FreeBSD</li> <li>Debian</li> <li>NetBSD</li> <li>Windows</li> ``` 這是輸出。 ## 屬性 元素屬性可以使用`attr()`方法檢索。 `attributes.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) tag = doc("ul") print(tag.attr("id")) print(tag.attr("style")) ``` 在代碼示例中,我們檢索并打印`ul`元素的兩個屬性:`id`和`style`。 ```py $ ./attributes.py mylist width:150px ``` 這是輸出。 ## 網頁抓取 請求是一個簡單的 Python HTTP 庫。 它提供了通過 HTTP 訪問 Web 資源的方法。 `scraping.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq import requests as req resp = req.get("http://www.something.com") doc = pq(resp.text) title = doc('title').text() print(title) ``` 該示例檢索一個簡單網頁的標題。 ```py resp = req.get("http://www.something.com") doc = pq(resp.text) ``` 我們獲取頁面的 HTML 數據。 ```py title = doc('title').text() print(title) ``` 我們檢索其標題。 ```py $ ./scraping.py Something. ``` 這是輸出。 ## 選擇標簽 選擇器用于選擇 HTML 文檔中滿足某些條件的元素。 條件可以是它們的名稱,ID,類名稱,屬性或它們的組合。 `selecting.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq def print_item(self, item): print("Tag: {0}, Text: {1}".format(item.tag, item.text)) with open("index.html", "r") as f: contents = f.read() doc = pq(contents) first_li = doc("li:first") print(first_li.text()) last_li = doc("li:last") print(last_li.text()) odd_lis = doc("li:odd") odd_lis.each(print_item) ``` 該示例從 HTML 文檔中選擇各種`li`標簽。 ```py def print_item(self, item): print("Tag: {0}, Text: {1}".format(item.tag, item.text)) ``` 在此函數中,我們打印標簽名稱及其文本。 ```py first_li = doc("li:first") print(first_li.text()) ``` 我們選擇第一個`li`標簽,并使用`text()`方法打印其內容。 ```py last_li = doc("li:last") print(last_li.text()) ``` 在這里,我們得到了最后的`li`標簽。 ```py odd_lis = doc("li:odd") odd_lis.each(print_item) ``` 借助`each()`方法,我們將打印每個奇數`li`元素的標簽及其內容。 ```py $ ./selecting.py Solaris Windows Tag: li, Text: FreeBSD Tag: li, Text: NetBSD ``` 這是輸出。 ## 移除元素 `remove()`方法刪除標簽。 `removing.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) removed_item = doc('li:last').remove() print(removed_item) print(doc) ``` 在示例中,我們刪除了最后一個`li`標簽。 ```py removed_item = doc('li:last').remove() ``` 我們選擇最后一個`li`標簽,然后用`remove()`刪除它。 返回刪除的元素。 ```py print(removed_item) print(doc) ``` 我們將打印已刪除的項目和已刪除元素的文檔。 ```py $ ./removing.py <li>Windows</li> <html> <head> <title>Header</title> <meta charset="utf-8"/> </head> <body> <h2>Operating systems</h2> <ul id="mylist" style="width:150px"> <li>Solaris</li> <li>FreeBSD</li> <li>Debian</li> <li>NetBSD</li> </ul> </body> </html> ``` 這是輸出。 ## `items`方法 `items()`方法允許迭代元素。 `iterate.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) items = [item.text() for item in doc.items('li')] print(items) ``` 該示例迭代文檔的`li`元素。 ```py items = [item.text() for item in doc.items('li')] ``` `items()`方法用于在列表推導式中創建`li`元素的 Python 列表。 ```py $ ./iterate.py ['Solaris', 'FreeBSD', 'Debian', 'NetBSD', 'Windows'] ``` 這是輸出。 ## 附加和前置元素 `append()`方法在節點的末尾添加元素,`prepend()`方法在節點的末尾添加元素。 `append_prepend.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) mylist = doc("#mylist") mylist.prepend("<li>DragonFly</li>") mylist.append("<li>OpenBSD</li>") print(mylist) ``` 該代碼示例使用`prepend()`和`append()`方法插入兩個`li`元素。 ## `filter`方法 `filter()`方法用于過濾元素。 `filtering.py` ```py #!/usr/bin/python3 from pyquery import PyQuery as pq with open("index.html", "r") as f: contents = f.read() doc = pq(contents) filtered = doc('li').filter(lambda i: pq(this).text().startswith(('F', 'D', 'N'))) print(filtered.text()) ``` 該示例顯示了以`F`,`D`或`N`開頭的操作系統。我們使用`filter()`方法和匿名函數。 ```py ./filtering.py FreeBSD Debian NetBSD ``` 這是輸出。 在本教程中,我們使用了 python PyQuery 庫。 您可能也對以下相關教程感興趣: [jQuery 教程](/web/jquery), [Beautifulsoup 教程](/python/beautifulsoup), [Python 教程](/lang/python/), [Python FTP 教程](/python/ftp/),Python 列表推導, [OpenPyXL 教程](/articles/openpyxl/), [Python Requests 教程](/web/pythonrequests/)和 [Python CSV 教程](/python/csv/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看