一.安装
pip3 install pyquery
二.导入与实例化导入
from pyquery import PyQuery as pq
实例化
- 本地对象
html=pq(filename='······')
- 网页对象
html=pq(url='······')
三.XPath规则代码实例
page_text='''
- first item
- second item
- third item
- fourth item
- fifth item
'''
1.CSS选择器
1.1 使用方法
- id——.#id
- class——.class
- li——li
- 空格表示嵌套
先选取id为container的节点,再选取其内部class为list的节点内部的所有li节点
result=html('#container .list li')
print(result)
遍历获取的节点,再调用text方法获取文本内容
result=html('#container .list li').items()
for item in result:
print(item.text())
2. 查找节点
2.1 子节点
- find( ):查找所有子孙节点
items=html('.list')
result=items.find('li')
print(result)
- children( ):查找所有子节点
result=items.children()
若要筛选子节点中符合条件的节点,则向children传入CSS选择器
result=items.children('.active')
2.2 父节点
- parent( ):直接父节点
items=html('.list')
result=items.parent()
print(result)
- parents( ):所有祖先节点
items=html('.list')
result=items.parents()
print(result)
若要筛选某个祖先节点,则向parents方法传入CSS选择器
items=html('.list')
result=items.parents('.wrap')
print(result)
2.3 兄弟节点
- siblings( ):.item-0与.active之间不加空格则表示并列
items=html('.list')
result=items('.item-0.active').siblings()
print(result)
若要筛选某个兄弟节点,则向siblings方法传入CSS选择器
items=html('.list')
result=items('.item-0.active').siblings('.active')
print(result)
3. 遍历节点
3.1 单个节点
- 直接打印输出
result=(' .item-0.active')
print(result)
- 转成字符串
result=items(' .item-0.active')
print(str(result))
3.2 多个节点
- items( ):遍历多个节点
result=html('li').items()
for li in result:
print(li)
3.3 获取属性
- attr( ):单个节点
首先选中class为item-0和activr的li节点内的a节点,然后调用attr方法获取属性
result=html(' .item-0.active a').attr('href')
print(result)
#或
result=html(' .item-0.active a').attr.href
print(result)
当放回结果有多个时,只返回第一个节点的属性
- 多个节点需要使用遍历
result=html('a').items()
for a in result:
print(a.attr.href)
3.3 获取文本
- text( ):获取纯文字内容
result=html('.item-0.active a').text()
print(result)
多节点全部获取,无需遍历
- html( ):获取html文本
result=html(' .item-0.active').html()
print(result)
多节点只获取第一个,全部获取需遍历
4. 节点 *** 作 4.1 addClass和removeClass- removeClass:移除active这个class
result=html('.item-0.active').removeClass('active')
print(result)
- addClass:添加1这个class
result=html('.item-0.active').addClass('1')
print(result)
4.2 attr、text和html
- attr( ):传入新的属性,第一个参数为属性名,第二个参数为属性值
result=html('.item-0.active').attr('name','link')
print(result)
- text( ):修改文本内容
result=html('.item-0.active').text('change items')
print(result)
- html( ):修改html内容
result=html('.item-0.active').html('changed item')
print(result)
4.3 remove
- remove( ):移除
实例
html=
‘’‘
Hello, World
This is a paragraph.
'''
提取Hello,World,而不要哦p节点内不得字符串
result=html('.wrap')
result.find('p').remove()
print(result.text())
5. 伪类选择器
5.1 第一个节点
result=html('li:first-child')
5.2 最后一个节点
result=html('li:last-child')
5.3 第n个节点
result=html('li:nth_child(2)')
5.4 第n个节点之后的节点
result=html('li:gt(2)')
5.5 偶数节点
result=html('li:nth-child(2n)')
5.6 包含某一文本的节点
result=html('li:contains(xxx)')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)