PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了。

Pyquery需要依赖lxml模块,不装的话,使用会报错。

安装

 
1
2
pip install lxml
pip install pyquery

解析html的3种方式

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from pyquery import PyQuery
html = """
<html><head><title>BestTest</title></head>
<body>
<div>
<p class="content">最专业的软件测试培训
<a href="http://www.besttest.cn" class="link" id="link1"><!--首页--></a>,
<a href="http://www.besttest.cn/page/3.html" class="link" id="link2">BestTest性能测试</a> and
<a href="http://www.besttest.cn/page/47.html" class="link" id="link3" target="_blank">BestTest自动化测试</a>;
课程详情请点击上面的链接.</p>
<p class="content">.这是广告植入.</p>
<p class="title">BestTest is best</p>
</div>
</body>
</html>
"""
#解析html的3种方式
doc = PyQuery(url='http://www.nnzhp.cn') #指定url
doc2 = PyQuery(html) #指定html字符串
doc3 = PyQuery(filename='index.html') #指定文件
print(doc)
print(doc2)
print(doc3)

css选择器

css在bs模块里面也用过,用法差不多。具体如下

 
1
2
3
4
5
6
7
8
# css选择器
print(doc2('.link')) #通过class
print(doc2('#link1')) #通过id
print(doc2('.content,#link1')) #找到所有class为content和id为link1的
print(doc2('.content #link1')) #在content下面找到id为link1的元素
print(doc2('a'))#找到所有的a标签
print(doc2('[href]'))#找到所有带有href属性的元素
print(doc2('a[target=_blank]')#找到a标签下面target为_blank的

常用方法

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
eq方法,获取第几个元素
 
a_tags = doc2('a')
print(a_tags.eq(0))#a标签里面第一个
print(a_tags.eq(1))#a标签里面第二个
 
# items()
#如果找到多个元素的话,想循环取元素的话,就得用.items()方法,items就是为了循环用的
a_tag = doc2('a')
for a in a_tag.items():
print(a.text())
 
 
 
 
# text() 、html()
#text()方法是获取元素里面的文字的,html()是获取元素的html
 
a=doc2('.content')
print(a.html()) #html格式的
print(a.text()) #只有里面的文字
 
#find方法,查找元素
 
print(doc2.find('p').find('a'))#从所有的p标签里面找到a标签
print(doc2.find('p'))#找到所有的p标签
print(doc2.find('.content'))#找到所有class为content的
 
#filter方法,用来筛选
print(doc2.find('a').filter('#link1')) #先找到a标签,然后从a标签里面筛选出来id为link1的
 
#attr方法,获取属性
 
print(doc2('#link1').attr(('href')))#获取id为link1的href的属性值
 

最新文章

  1. Python列表去重
  2. 【postman】postman
  3. java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext问题原因及解决方法
  4. A trip through the Graphics Pipeline 2011_07_Z/Stencil processing, 3 different ways
  5. redis客户端--jedis
  6. gridControl控件动态绑定列
  7. JSP简单访问数据库
  8. Junit3
  9. 个人博客实现Archives查询小记
  10. oracle 查看表属主和表空间sql
  11. 【C语言探索之旅】 第二部分第十课:练习题和习作
  12. &lt;context:component-scan&gt;详解
  13. java反射机制的简单使用
  14. CentOS命令介绍综合
  15. Ubuntu 安装以及web服务器配置
  16. 8F - 采矿
  17. 两个DataTable关联查询(inner join、left join)C#代码
  18. AI,DM,ML,PR的区别与联系
  19. 温故而知新-array_walk和sizeof和array_count_values()和extract()
  20. MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化

热门文章

  1. 并查集:HDU4496-D-City(倒用并查集)
  2. poj 3258 跳房子问题 最大化最小值
  3. P2920 [USACO08NOV]时间管理Time Management
  4. Android stadio litepal
  5. DevOps实施的三种IT障碍
  6. 了解Windows Server以及Hyper-V许可模式
  7. ogre3D学习基础3 -- 粒子与表层脚本
  8. [oldboy-django][1初始django]后台管理页面的布局 + djano母版(继承html)
  9. 【转】Twitter-Snowflake,64位自增ID算法详解
  10. BZOJ 1096: [ZJOI2007]仓库建设(DP+斜率优化)