pyquery

如果你对web有所涉及,比较喜欢css选择器,对jquery有所了解,那么有一个更加适合你的解析库--pyquery

初始化有多种方法比如传入字符串,传入url,传入文件名

字符串初始化

from pyquery import PyQuery as pq
doc = pq(html)
print(doc("li"))

url初始化

from pyquery import PyQuery as pq
doc = pq(url="https://www.baidu.com)
print(doc("title"))

文件初始化

from pyquery import PyQuery as pq
doc = pq(filename = "demo.html")
print(doc("head"))

 

查找节点

直接子节点children()
子孙节点find()
父节点parent()
祖先节点parents()
兄弟节点siblings

如果想要筛选某个祖先节点的话,可以像parents()方法传入css选择器,这样就会返回祖先节点中符合css选择器的节点

items = doc(".list")
print(items.parents(.warp))

 

遍历

pyquery的选择结果可能是多个节点,也可能是单个节点,类型都是PyQuery类型的

对于单个节点,可以直接打印输出,也可以直接转为字符串

print(doc("li"))
print(str(doc("li")))

对于多个节点就需要遍历了

调用items()方法后,会得到一个生成器,就可以逐个得到节点对象,也是PyQuery类型的,每个节点对象还可以进行选择,非常灵活

from pyquery import PyQuery as pq
doc = pq(filename = "demo.html")
lis = doc("li").items()
for li in lis:
    print(li,type(li))

 

获取信息

.text()方法,获取内部的文本信息,会忽略节点内部包含的所有html,只返回纯文本内容

如果想要获取节点内部所有的html文本,就要使用.html()方法

如果选中的结果有多个a节点

a.html()方法返回第一个a节点内部html文本,如果想要获取全部的就需要遍历

a.text()返回了所有的a节点内部的纯文本,中间用空格分割,返回结果是字符串

 

节点操作

提供了一系列方法对节点进行动态修改,比如为某一节点添加class,移除某个节点等

addClass()和removeClass()动态改变节点的class属性

a.addClass("active")    #添加class元素active
a.removeClass("active")    #删除class元素active

attr()方法对属性进行操作

a.attr("name","link")

text()和html()方法改变节点内部的内容

a.text("hello world")
a.html("<h1>hello world</h1>")

remove()方法,顾名思义,就是移除

a.children.remove()

 

 

伪类选择器

from pyquery import PyQuery as pq
html = '''
<li>1a</li>
<li>2b</li>
<li>3c</li>
<li>4d</li>
<li>5e</li>
<li>6f</li>
'''
doc = pq(html)
li = doc("li:first_child") #第一个li节点
print(li)
li = doc("li:last_child") #倒数第一个li节点
print(li)
li = doc("li:nth_child(4)") #指定li节点,从一开始
print(li)
li = doc("li:gt(1)") #第二个li之后的所有li节点
print(li)
li = doc("li:nth_child(2n)") #偶数位置的li节点,或者(even) 
print(li)
li = doc("li:nth_child(2n+1)")#奇数位置的li节点,或者(odd)
print(li)
li = doc("li:contains(a)") #包含内容a的节点,放数字会报错
print(li)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值