python学习笔记(2) -- pyquery的基本操作

python学习笔记(2) – pyquery的基本操作

​ 虽然pyquery中有关于对html文件增加属性、类、删除类等各类操作,但因为我主要是用来爬网页的,目前也用不到,所以就总结了爬取时非常有用的各类方法。

​ 不过pyquery中好像没有将文本转为字节字符串的函数(或许是我还没找到,若如此,希望知道的朋友告知一下,多谢),所以用的还是requests中的content。

  1. 首先肯定是最常用页最方便的css选择器,不必多说,一看代码肯定就知道了。

from pyquery import PyQuery as pq
html = """
<div class="div1">
    <ul class="ul_1">
        <li class="li1">one</li>
        <li class="li2">two</li>
    </ul>
    <div class="div1-1">
        <ul class="ul_A">
        <li class="li1-a">a</li>
        <li class="li1-b">b</li>
        <li class="li1-c"><a href="asdf">c</a></li>
    </ul>
    </div>
</div>
"""

doc = pq(html)
print(doc(".div1 .ul_1"))
print(doc(".div1 .ul_1").text())

.find()查找的是子孙节点,有时候我习惯直接在选择器中都写完,find()函数用得较少。打印结果:

<ul class="ul_1">
        <li class="li1">one</li>
        <li class="li2">two</li>
    </ul>
    
one
two

那么,.text()的作用也一目了然了 — 剔除html元素,直接获取文本。

  1. 接下来就是一些不常用到,到特定时候也挺有用的函数:

查找子节点:.children()

查找兄弟节点:.siblings()

两个都可以结合css选择器继续匹配,直接在括号里输入想要匹配的就行。同时,还有一些伪类选择器的使用:

from pyquery import PyQuery as pq
html = """
<div class="div1">
	<ul class="ul_1">
		<li class="li1">one</li>
		<li class="li2">two</li>
	</ul>
	<div class="div1-1">
		<ul class="ul_A">
		<li class="li1-a">a</li>
		<li class="li1-b">b</li>
		<li class="li1-c"><a href="asdf">c</a></li>
		<li class="li1-d">d</li>
	</ul>
	</div>
</div>
"""

doc = pq(html)
print(doc("li:first-child").text())  # 第一个li节点,返回 one a
print(doc("li:last_child").text())	# 最后一个li节点,返回 two d
print(doc("li:nth-child(3)").text())	# 第三个li节点,返回 c
print(doc("li:gt(3)").text())	# 从第三个开始到最后的li节点,返回 c d
print(doc("li:nth-child(2n)").text())	# 偶数位的li节点,返回 two b d
print(doc("li:contains(a)"))	# 返回包含a的li节点,返回 <li class="li1-a">a</li>
print(doc("li:eq(0)").text())	# 索引,从0开始,返回 one,索引为5则返回 d
print(doc("li:even").text())	# 奇数位所有节点,返回 one a c
print(doc("li:odd").text())		# 偶数位所有节点,返回 two b d

pyquery参考网站:https://pyquery.readthedocs.io/en/latest/index.html

更多伪类参考:https://pyquery.readthedocs.io/en/latest/pseudo_classes.html

多谢观看,下面是我自己开的公众号,会和博客内容同步更新,感兴趣的朋友可以关注一下,我们共同学习!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值