首页 >后端开发 >Python教程 >Pyquery:Python的JQuery

Pyquery:Python的JQuery

William Shakespeare
William Shakespeare原创
2025-03-01 10:22:09560浏览

在本教程中,您会查看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