0303pyquery
pyquery(p113)提供了和 jQuery 类似的语法来解析 HTML 文档,支持 CSS 选择器
使用
简单的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
html = """<div id="container">
<ul class="list">
<li class="item-0">first item</li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
<li name="empty li"/>
</ul>
</div>"""
from pyquery import PyQuery as pq
doc=pq(html) #字符串初始化。
#url初始化:pq(url="http://xxxx")
#filename初始化:pq(filename="xx.html")
函数表
操作 | 描述 | 实例 |
---|---|---|
css选择器 | doc(‘#container .list li’),返回所有 li 节点 doc(“.item-0.active”),返回 <li class="item-0 active"/> 节点 | |
items() | 将返回的pyquery.pyquery.PyQuery 转换成generator | doc(‘#container .list li’).items() |
text() | 返回节点文本内容 | doc(“.item-0.active”).text(),返回third item |
text(new_value) | 修改节点文本内容 | a=doc(‘.item-1.active a’) a.text(“new text”),将节点 fourth item 替换成new text |
find | 从当前节点查找子节点(查找范围是所有子孙节点) | doc(‘ul’).find(“.item-0.active”),返回<li class="item-0 active"/> 节点 |
children() | 返回直接子节点 | doc(‘ul’).find(“li”).children(),返回4个li节点里的 a节点 |
parent() | 返回父节点 | doc(‘.item-1.active’).parent(),返回ul节点 |
parents([css_selector]) | 返回所有祖先节点 | doc(‘.item-1.active’).parents(),返回div、ul (顺序返回,beautiful是递归向上返回)parents还支持css选择器查找符合条件的祖先节点(但是不会匹配祖先节点里的子节点) doc(‘.item-1.active’).parents(‘.list’),返回 ul |
siblings() | 返回所有兄弟节点(前面后面都包括,且不一定是按节点顺序排列) | doc(‘.item-1.active’).siblings(),返回出 <li class="item-0 active"/> 外的其他4个节点 |
prev()/next() | 当前节点的前一个/后一个节点 | |
attr(“x”) attr.x | 获取属性 | doc(‘.item-1.active a’).attr(“href”) doc(‘.item-1.active a’).attr.href,返回 link4.html |
attr(“x”,new_value) | 修改(添加)属性 | li.attr(“name”,”newName”) li.attr(“name”,None),None移除属性 |
addClass(“class_name”) removeClass(“class_name”) | 添加class到节点 删除节点的class | li=doc(‘.item-1.active’) li.addClass(“myClass”) li.removeClass(“myClass”) |
html(new_value) | 改变节点内容 | a=doc(‘.item-1.active a’) a.html(“<b>new text<\/b>”) |
remove() | 移除节点 | a=doc(‘.item-1.active a’) a.html(“<b>new text<\/b>”) a.remove(“b”) |
append empty prepend | ||
伪类选择器 | first-child last-child nth-child(n):第n个节点 gt/lt(n):大/小于n的节点(索引从0开始) empty:无子元素的节点 odd、even:奇偶节点(索引从0开始) contains | doc(“li:empty”),返回<li name="empty li"/> doc(“li:contains(second)”) |
This post is licensed under CC BY 4.0 by the author.