[
]
宙飒天下网 1. html的jQuery式解析(pyquery)
python上也有类似jQuery的html解析包,就是题目的名字了官网在这边
安装:
pip install pyquery 注意:pypy上安装需要下载下来然后修改依赖,把lxml改成lxml-cffi,然后再用
pypy setup.py install 安装.并且html内容必须把unicode转码成str才可以
from pyquery import PyQuery as pq from requests import get d = pq("<html><div id='1'><p>hello</p></div></html>") print(d("#1").text()) hello s = get("http://pyquery.readthedocs.org/en/latest/").text html=pq(s.encode("utf-8")) 1.1. 获取html内容
除了上面的方式通过requests获取html内容外,pyquery也内置了直接获取html文本的方法
- 构造函数添加关键字参数url就可以从web上获取html文本
- 构造函数添加关键字参数filename就可以从本地文件系统上获取html文本
html = pq(url="http://pyquery.readthedocs.org/en/latest/") pypy setup.py install 0 pypy setup.py install 11.2. 选择器
pyQuery与jquery的选择器规则相同,假设我们的pyquery实例名与jquery一致为$,这样给他一个参数他就可以进行查找工作
所有的查找返回的都是一个pyQuery对象,pyQuery对象类似数组,它的每个元素都是一个引用了DOM节点的对象,如果一个都没找到,那就返回一个空的jQuery对象
| 表达式 | 说明 |
|---|---|
$('#a') | 找到id是a的节点,并返回一个jQuery对象 |
$('.a') | 找到class是a的节点 |
$('a') | 找到节点 |
$('[name=a]') | 找到有属性name是a的节点,当属性中包含特殊字符时则用双引号引起来 |
$('[name^=a]') | 找到有属性name是以a开头的节点 |
$('[name$=a]') | 找到有属性name是以a结尾的节点 |
1.2.1. 选择器可以组合,
比如:
pypy setup.py install 2是说要找name属性是a的<p>标签.各种组合可以随意搭配
1.2.2. 选择器可以用,表示或的关系,从而把符合多种选择条件的都放进去,
比如
pypy setup.py install 3表示name属性是以a开头或以a结尾的<p>标签
1.2.3. 选择器可以固定层级
如果两个DOM元素具有层级关系,就可以用$('ancestor descendant')来选择,层级之间用空格隔开。
比如:
pypy setup.py install 4表示在name属性是a1的div标签中的所有name属性是以a结尾的p标签
也可以用自选择器$('parent>child')来做选择
自选择器固定了层级关系是父子关系,也就是一个节点必须是拎一个的直属子节点
pypy setup.py install 51.3. 过滤器
过滤器用来过滤由选择器选出来的节点,用:表示过滤器
常用的普通标签的过滤器:
| 过滤器 | 说明 |
|---|---|
$('ul.lang li:first-child') | 仅选出第一个 |
$('ul.lang li:last-child') | 仅选出最后一个 |
$('ul.lang li:nth-child(2)') | 选出第N个元素,N从1开始 |
$('ul.lang li:nth-child(even)') | 选出序号为偶数的元素 |
$('ul.lang li:nth-child(odd)') | 选出序号为奇数的元素 |
$('div:visible') | 所有可见的div |
$('div:hidden') | 所有隐藏的div |
常用的表单的过滤器:
| 过滤器 | 说明 |
|---|---|
| input | 可以选择<input>,<textarea>,<select>和<button> |
| file | 可以选择<input type="file">,和input[type=file]一样 |
| checkbox | 可以选择复选框,和input[type=checkbox]一样 |
| radio | 可以选择单选框,和input[type=radio]一样 |
| focus | 可以选择当前输入焦点的元素,例如把光标放到一个<input>上,用$('input:focus')就可以选出 |
| checked | 选择当前勾上的单选框和复选框,用这个选择器可以立刻获得用户选择的项目 |
| enabled | 可以选择可以正常输入的<input>、<select>等,也就是没有灰掉的输入 |
| disabled | 和:enabled正好相反,选择那些不能输入的 |
pypy setup.py install 6 pypy setup.py install 7pypy setup.py install 8 pypy setup.py install 9 



还没有评论,来说两句吧...