PyQuery库的使用

PyQuery库的使用

官方文档:http://pyquery.readthedocs.io/

1 初始化

from pyquery import PyQuery as pq

1.1 字符串初始化

html = '''
<div>
    <ul>
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''
doc = pq(html)

1.2 URL初始化

doc = pq(url='http://www.baidu.com')

1.3 文件初始化

doc = pq(filename='demo.html')

2 基本CSS选择器

2.1 查找标签元素

.代表class,#代表id,空格隔开是搜索下一级,无空格隔开是搜索同级。

html = '''
<div id="container">
    <ul>
        <div class = "list">
             <li class="item-0 active">first item</li>
             <li class="item-1">我是<a href="link2.html">中国人</a></li>
        </div>
     </ul>
 </div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(type(doc))                                # <class 'pyquery.pyquery.PyQuery'>
(1)直接子元素
print(doc('.list').children())                  # 输出所有子元素
print(doc('.list').children('.item-0')) 
(2)子孙元素
print(doc('#container .list li'))              
print(doc('#container').find('.list li'))
print(doc('#container')('.list li'))

print(doc('#container .list li.item-0'))
(4)直接父元素
print(doc('li').parent())
(5)祖先元素
print(doc('li').parents())
print(doc('li').parents('#container'))  
print(doc('li').parents('ul'))  
(6)兄弟元素
print(doc('li.item-0').siblings())
print(doc('li.item-0').siblings('.item-1'))

2.2 遍历元素

lis = doc('li').items()         
print(type(lis))            # <class 'generator'>
for li in lis:
    print(li)

2.3 获取属性、文本

li = doc('li.item-0.active')

print(li.attr('class'))
print(li.attr.class_)

li = doc('li.item-1')
print(li.text())

2.4 获取html

该标签去掉首位的本标签符号。

doc = pq(html)
ul = doc('ul')
print(ul.html())

2.5 DOM操作

li = doc('li.item-0.active')
(1)添加/修改属性
li.attr('name', 'link')
(2)添加/修改class属性
li.removeClass('active')
li.addClass('active')
(3)添加/修改style属性
li.css('font-size', '14px')
(4)删除标签
html = '''
<div class="wrap">
    Hello, World
    <p>This is a paragraph.</p>
 </div>
'''
from pyquery import PyQuery as pq

doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())              # Hello, World This is a paragraph.
wrap.find('p').remove()
print(wrap.text())              # Hello, World

其他DOM方法:http://pyquery.readthedocs.io/en/latest/api.html

3 伪类选择器

html = '''
<div class="wrap">
    <div id="container">
        <ul class="list">
             <li class="item-0">first item</li>
             <li class="item-1">second item</li>
             <li class="item-0 active">third item</span></li>
             <li class="item-1 active">fourth item</li>
             <li class="item-0">fifth item</li>
         </ul>
     </div>
 </div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('li:first-child')   # 首个元素
li = doc('li:last-child')    # 最后一个元素
li = doc('li:nth-child(2)')  # 第二个元素
li = doc('li:gt(2)')         # 第0、1、2 之后的元素
li = doc('li:nth-child(2n)') # 第偶数个元素
li = doc('li:contains("second item")')  # 文本包含“second item”的元素

更多CSS选择器:http://www.w3school.com.cn/css/index.asp

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值