Python中的jquery PyQuery库使用小结


Posted in Python onMay 13, 2014

pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,使用方法:

from pyquery import PyQuery as pq

1、可加载一段HTML字符串,或一个HTML文件,或是一个url地址,例:
d = pq("<html><title>hello</title></html>")
d = pq(filename=path_to_html_file)
d = pq(url='http://www.baidu.com') # 此处url必须写全

2、html() 和 text() ——获取相应的HTML块或文本块,例:
p = pq("<head><title>hello</title></head>")
p('head').html()  # 返回<title>hello</title>
p('head').text()  # 返回hello

3、根据HTML标签来获取元素,例:
d = pq('<div><p>test 1</p><p>test 2</p></div>')   
d('p')    # 返回[<p>,<p>]
print d('p')  # 返回<p>test 1</p><p>test 2</p>
print d('p').html()  # 返回test 1

注意:当获取到的元素不只一个时,html()、text()方法只返回首个元素的相应内容块

4、eq(index) ——根据给定的索引号得到指定元素

接上例,若想得到第二个p标签内的内容,则可以:

print d('p').eq(1).html()   # 返回test 2

5、filter() ——根据类名、id名得到指定元素,例:

d = pq("<div><p id='1'>test 1</p><p class='2'>test 2</p></div>")
d('p').filter('#1')   # 返回[<p#1>]
d('p').filter('.2')   # 返回[<p.2>]

6、find() ——查找嵌套元素,例:
d = pq("<div><p id='1'>test 1</p><p class='2'>test 2</p></div>")
d('div').find('p')   # 返回[<p#1>, <p.2>]
d('div').find('p').eq(0)  #返回[<p#1>]

7、直接根据类名、id名获取元素,例:
d = pq("<div><p id='1'>test 1</p><p class='2'>test 2</p></div>")
d('#1').html() # 返回test 1
d('.2').html() # 返回test 2

8、获取属性值,例:
d = pq("<p id='my_id'><a href='http://hello.com'>hello</a></p>")
d('a').attr('href')  # 返回http://hello.com
d('p').attr('id')  # 返回my_id

9、修改属性值,例:
d('a').attr('href', 'http://baidu.com')

10、addClass(value) ——为元素添加类,例:

d = pq('<div></div>')
d.addClass('my_class')   # 返回[<div.my_class>]

11、hasClass(name) #返回判断元素是否包含给定的类,例:
d = pq("<div class='my_class'></div>")
d.hasClass('my_class')   # 返回True

12、children(selector=None) ——获取子元素,例:
d = pq("<span><p id='1'>hello</p><p id='2'>world</p></span>")
d.children()   # 返回[<p#1>, <p#2>]
d.children('#2')   # 返回[<p#2>]

13、parents(selector=None)——获取父元素,例:
d = pq("<span><p id='1'>hello</p><p id='2'>world</p></span>")
d('p').parents()    # 返回[<span>]
d('#1').parents('span')   # 返回[<span>]
d('#1').parents('p')   # 返回[]

14、clone() ——返回一个节点的拷贝

15、empty() ——移除节点内容

16、nextAll(selector=None) ——返回后面全部的元素块,例:

d = pq("<p id='1'>hello</p><p id='2'>world</p><img scr='' />")
d('p:first').nextAll()   # 返回[<p#2>, <img>]
d('p:last').nextAll()   # 返回[<img>]

17、not_(selector) ——返回不匹配选择器的元素,例:
d = pq("<p id='1'>test 1</p><p id='2'>test 2</p>")
d('p').not_('#2')    # 返回[<p#1>]

更多内容,参考官网 http://packages.python.org/pyquery
Python 相关文章推荐
Django 前后台的数据传递的方法
Aug 08 Python
Python读取word文本操作详解
Jan 22 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
Nov 09 Python
Python getopt模块处理命令行选项实例
May 13 #Python
Python random模块(获取随机数)常用方法和使用例子
May 13 #Python
Python自动化测试工具Splinter简介和使用实例
May 13 #Python
Python获取远程文件大小的函数代码分享
May 13 #Python
Python FTP操作类代码分享
May 13 #Python
python生成指定尺寸缩略图的示例
May 07 #Python
python读取浮点数和读取文本文件示例
May 06 #Python
You might like
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现队列的方法
2015/05/26 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python进阶之自定义可迭代的类
2019/08/20 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
shell程序中如何注释
2012/02/17 面试题
介绍一下JNDI的基本概念
2013/07/26 面试题
2014年学生会个人工作总结
2014/11/07 职场文书
投标承诺函格式
2015/01/21 职场文书