在本教程中,您将了解PyQuery
,这是一个Python库,可用于对XML文档进行jQuery查询。 从语法上讲,它与jQuery非常相似,并且如果您熟悉jQuery,则应该更容易理解。
PyQuery入门
要开始使用PyQuery
,请使用PIP安装Python软件包。
pip install pyquery
一旦安装了PyQuery
,将其导入到Python程序中。
from pyquery import PyQuery as pq
让我们从一个基本的例子开始。 考虑以下HTML:
<div id="divMain">
<span>
Hello World
</span>
</div>
将输入的XML传递给PyQuery
对象,您应该能够对其应用jQuery样式查询。
divMain = pq("<div id='divMain'><span>Hello World</span></div>")
假定divMain
为jQuery对象,并打印divHTML内容。
print divMain('#divMain').html()
保存所做的更改,然后尝试运行该程序。 您应该具有以下输出:
<span>Hello World</span>
要从跨度内部访问Hello World
文本,代码为:
print divMain('#divMain').text()
保存所做的更改,然后尝试运行代码。 您应该具有以下输出:
Hello World
使用PyQuery进行属性操纵
现在让我们看一下如何使用PyQuery
库读取属性。 假设您有一个HTML元素,如下所示:
<ul id="ulMain">
<li>Roy</li>
<li>Hari</li>
</ul>
使用PyQuery
库读取上述HTML内容。
ulMain = pq("<ul id='ulMain'><li>Roy</li><li>Hari</li></ul>")
让我们尝试访问ulMain
ul的ID属性。
print ulMain.attr('id')
保存以上更改,然后尝试运行Python程序。 您应该在终端上印有ID ulMain
。
您已经了解了如何访问ul ulMain
的ID属性。 让我们尝试为相同的ulMain
元素设置一个类名。 要指定类名称属性,需要指定属性名称及其对应的值,如下所示:
ulMain.attr('class','testclass')
打印ulMain
对象,您应该拥有带有class属性的元素。
<ul id="ulMain" class="testclass">
<li>Roy</li>
<li>Hari</li>
</ul>
您也可以不使用attr
方法直接添加和删除类。 要将类添加到元素,可以使用方法addClass
。
ulMain.addClass('test')
要从元素中删除现有的类,可以使用removeClass
方法。
ulMain.removeClass('test')
使用PyQuery处理CSS
除了属性之外,该元素还将具有一些CSS属性。 要添加或修改CSS属性,可以使用css
方法并指定属性。 假设您要以ul ulMain
的样式指定高度。 以下代码将所需的样式属性添加到元素。
ulMain.css('height','100px')
保存以上更改,然后尝试执行Python程序。 您应该将ul ulMain
和新样式一起打印。
<ul id="ulMain" style="height: 100px">
<li>Roy</li>
<li>Hari</li>
</ul>
要将多种样式添加到元素,可以如下所示指定它们:
ulMain.css({'height':'100px','width':'100px'})
运行该程序,您应该将样式添加到ulMain
。
<ul id="ulMain" style="width: 100px; height: 100px">
<li>Roy</li>
<li>Hari</li>
</ul>
创建和追加元素
在动态元素创建过程中,需要创建新元素并将它们附加到将要呈现它们的现有父元素上。 让我们看一下如何使用PyQuery
创建和附加元素。
假设您有一个名为divMain
的主容器div。
divMain = pq("<div id='divMain'></div>")
让我们使用PyQuery
创建一个新的span元素。
span = pq('<span>Hello World</span>')
将一些CSS属性添加到范围中。
span.css({'color':'blue','font-weight':'bold'})
PyQuery
提供了一种将元素添加到现有元素的方法。 您可以使用append
方法将span元素附加到div divMain
。 这是代码:
divMain.append(span)
print divMain
保存更改并运行程序。 您应该能够看到divMain
印有新创建的跨度。
<div id="divMain">
<span style="color: blue; font-weight: bold">
Hello World
</span>
</div>
您使用了append方法将范围附加到div。 您还有另一个名为appendTo
替代方法,该方法会将节点附加到值。 在上述情况下,您可以使用如下方法:
span.appendTo(divMain)
使用PyQuery查找元素
PyQuery
提供了查找子项,下一个元素,最接近的元素等的方法。它还提供了过滤和查找特定节点内的元素的方法。
假设您有一块特定HTML,如下所示:
<div id="divMain">
<div id="content">
<ul>
<li>Jade</li>
<li>Jim</li>
</ul>
</div>
<div id="list">
<span>Hello World</span>
</div>
</div>
将以下HTML添加到PyQuery
对象:
divMain = pq("<div id='divMain'>"+
"<div id='content'>"+
"<ul>"+
"<li>Jade</li>"+
"<li>Jim</li>"+
"</ul>"
"</div>"+
"<div id='list'>"+
"<span>Hello World</span>"
"</div>"+
"</div>")
让我们使用PyQuery
来查找div divMain
的子divMain
。 添加以下代码行以打印divMain
。
print divMain.children()
在运行程序时,您应该具有以下输出:
<div id="content">
<ul>
<li>Jade</li>
<li>Jim</li>
</ul>
</div>
<div id="list"><span>Hello World</span></div>
要查找最接近元素的元素,可以使用closest
方法。 要查找与跨度最接近的div元素,代码为:
print divMain('span').closest('div')
上面的命令将返回以下输出:
<div id="list"><span>Hello World</span></div>
find
方法也可用于查找元素。 例如,要在divMain
找到一个范围,您需要调用如下所示的方法:
print divMain.find('span')
上面的命令将返回范围。
<span>Hello World</span>
在HTML内插入元素
尽管append
会为现有元素添加元素,但是有时您需要在某些元素之后或之前插入元素。 PyQuery
提供了一种在其他元素之前或之后插入元素的方法。
让我们定义一个新的段落元素,该元素将在divMain
div中的跨度之后插入。
p = pq('<p>Welcome</p>')
在段落p
元素上调用insertAfter
方法,以将其插入到跨度之后。
p.insertAfter(divMain('span'))
print divMain
保存以上更改并运行Python程序。 您应该具有以下输出:
<div id="divMain">
<div id="content">
<ul>
<li>Jade</li>
<li>Jim</li>
</ul>
</div>
<div id="list">
<span>Hello World</span>
<p>Welcome</p>
</div>
</div>
同样,您具有insertBefore
方法,该方法将在元素之前插入。 如下所示修改代码以使用insertBefore
方法:
p.insertBefore(divMain('span'))
print divMain
保存更改并运行程序。 您应该能够在终端上看到以下输出:
<div id="divMain">
<div id="content">
<ul>
<li>Jade</li>
<li>Jim</li>
</ul>
</div>
<div id="list">
<p>Welcome</p>
<span>Hello World</span>
</div>
</div>
包起来
在本教程中,您了解了如何开始使用PyQuery
这个Python库,该库允许您对XML文档进行jQuery查询。 您已经了解了如何操作HTML元素的属性和CSS样式。
您学习了如何创建元素并将其添加到现有元素,以及如何在元素之前和之后插入新元素。 您在本教程中看到的只是冰山一角,而且该库还提供了更多其他功能。
有关使用此库的更多详细信息,建议您阅读官方文档 。 请在下面的评论中告诉我们您的建议。
翻译自: https://code.tutsplus.com/tutorials/pyquery-pythons-jquery--cms-28178