学习笔记之PyQuery篇

什么是PyQuery?

这是一个强大又灵活的网页解析库。

如果你觉得写正则太麻烦,

如果你觉得BeautifulSoup语法太难记,

如果你熟悉jQuery,

那么,PyQuery将会成为你的最佳实践!

#一个简单的例子
from pyquery import PyQuery as pq

html = ‘‘‘
    请在这里输入html代码
    ‘‘‘
doc = pq(html)      #初始化PyQuery对象
print(doc(‘li‘))    #选择li标签

CSS选择器

html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
print(doc(‘#container .list li‘))     #选择CSS属性,id前面加 # ,class前面加 .

查找元素

#用例: 使用find()方法,查找子元素

html = ‘‘‘
    请在这里输入html代码
‘‘‘
from pyquery import PyQuery as pq

doc = pq(html)
items = doc(‘.list‘)              #查找class=list的标签
print(items)
lis = items.find(‘li‘)      #查找li标签   find()方法较为常用
print(lis)

使用children() 查找子元素

html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
items = doc(‘.list‘)          #查找class=list的标签
lis = items.children()        #获取class=list的子标签
print(lis)

父元素

#用例: 使用 parent()方法 选择父元素
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq

doc = pq(html)
items = doc(‘.list‘)                      #查找class=list的标签
container = items.parent()                #查找class=list标签的父标签
print(container)

parents() 祖父元素

#用例:使用parents()方法 选择父元素
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq

doc = pq(html)
items = doc(‘.list‘)
parents = items.parents()
print(parents)
#这里我增加了一层 wrap,这样返回了所有的父元素

#下面的选择器 将再次筛选 选择器的选择 让我们看看结果
parent = items.parents(‘.wrap‘)
print(parent)

兄弟元素 siblings()

#用例:有关于siblings()的使用
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
li = doc(‘.list .item-0.active‘)
print(li.siblings())
print(li.siblings(‘.active‘))

多元素查找

#用例: 多个元素遍历选择
#如果我们选择的是多个元素,我们则需要使用items()方法对其遍历
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq

doc = pq(html)
lis = doc(‘li‘).items()
print(type(lis))
for li in lis:
    print(li)

获取属性

#获取信息

#用例: 获取属性
html = ‘‘‘
   请在这里输入html代码 
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
a = doc(‘.item-0.active a‘)
print(a)
print(a.attr(‘href‘))        #以attr获取href的值
print(a.attr.href)           #两种方法是一致的,用来获取属性的值
#用例: 获取文本
html = ‘‘‘
    请在这里输入html代码 
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
a = doc(‘.item-0.active a‘)
print(a)
print(a.text())              #获取a标签text文本

获取html

#用例: 获取HTML
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
a = doc(‘.item-0.active‘)
print(a)
print(a.html())       #获取a的html文本

DOM操作

#DOM操作
#addClass 和 removeClass 
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
li = doc(‘.item-0.active‘)
print(li)
li.removeClass(‘active‘)
print(li)
li.addClass(‘active‘)
print(li)

attr 和 css

#用例: attr 和 css 
html = ‘‘‘
    请在这里输入html代码
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
li = doc(‘.item-0.active‘)
print(li)
li.attr(‘name‘,‘link‘)
print(li)
li.css(‘font-size‘,‘14px‘)
print(li)

remove()

#用例: remove    (相对使用比较频繁噢)
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())
wrap.find(‘p‘).remove()     #移除p标签
print(wrap.text())

使用CSS选择特定的标签

#使用CSS3 特定的伪类选择器,选择特定的标签
#用例: 伪类选择器
html = ‘‘‘
<div class="wrap">
    <div id="container">
        <ul class="list">
            <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>
</div>
‘‘‘

from pyquery import PyQuery as pq
doc = pq(html)
li = doc(‘li:first-child‘)      #选择第1个 li 标签,注意 : 号写法
print(li)
li = doc(‘li:last-child‘)       #选择最后1个 li 标签
print(li)
li = doc(‘li:nth-child(2)‘)      #选择指定的,第2个li标签   ,child()    序号从1开始
print(li)
li = doc(‘li:gt(2)‘)             #选择序号比3大的,也就是第3个 li 标签之后的 li 标签  (序号从0开始)
print(li)
li = doc(‘li:nth-child(2n)‘)     #选择序号为偶数索引的 li 标签
print(li)
li = doc(‘li:contains(second)‘) #选择文本部分包含 second 的 li 标签
print(li)

#更多CSS选择器可以访问

#http://www.w3school.com.cn/css/index.asp

小白笔记 如有错误 请提醒修改

时间: 2024-10-23 11:03:30

学习笔记之PyQuery篇的相关文章

嵌入式学习笔记008-裸奔篇之串口

串口是个好东西,前几篇裸奔程序由于没有串口,自己调试都是有led等来表示的,比较"苦逼",终于可以用串口了~~~,这里主要采用上一篇博文(嵌入式学习笔记007-裸奔篇之定时器),也就是串口也是用中断实现的,而且也只是在前一篇博文增加串口的初始化uart0_init(),以及在中断处理函数增加对串口的处理.只要稍微改造前一篇博文就是一个通用的中断处理程序! 这里主要实现在串口输入一个字符,接受后+2再发送到串口,所以在串口输入a 会返回c---. 由于code都有相应的注释,读者自行查看

ZMAN的学习笔记之Python篇:装饰器

年前工作事务比较繁琐,我只能用零碎的时间继续学习Python,决定开一个系列的博文,作为自己深入学习Python的记录吧.名字也取好了,就叫<ZMAN的学习笔记之Python篇>~开篇是关于装饰器的,春节假期码的字哈哈~就让我们开始吧! 本文的例子都是自己想的,如果不是很合适,请大家提出宝贵意见哈~谢谢啦! 一.为什么要用“装饰器” 比如我们写了如下一段代码: # 打印0~99 def func(): for i in range(100): print(i) 我们想要监测执行这个函数花费了多

Java快速教程--vamei 学习笔记(基础篇)

链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/14/2958654.html java快速教程第2课 方法与数据成员 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/25/2964430.html java快

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended

设计模式学习笔记(目录篇)

设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录. 1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三:装饰模式) 4   设计模式学习笔记(四:策略模式) 5   设计模式学习笔记(五:适配器模式) 6   设计模式学习笔记(六:责任链模式) 7   设计模式学习笔记(七:外观模式) 8   设计模式学习笔记(八:迭代器模式) 9   设计模式学习笔记(九:中介者模式) 10  设计模式学习笔记(

Java快速教程--vamei 学习笔记(进阶篇)

感谢vamei,学习链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html Java进阶01 String类 学习链接:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 字符串操作 ---------------------------------------------------------------------------------------

学习笔记-性能测试-工具篇-LR-初识

关于LR的基本信息网上都能搜到,这里就不再赘述. loadrunner的安装准备 windows环境: 前提条件: 内存:2G,硬盘空闲空间10G,安装完成后实际只占不到2G 支持winXP  SP3;32位与64位win7浏览器支持IE6-8,IE9,firefox3 若以前安装过LoadRunner,则将其卸载. 下载好需要的部件然后通过安装程序进行安装 关于破解细节,详情请百度或者谷歌. 这里找到一篇关于LR11的安装篇: http://www.cnblogs.com/yangxia-te

《Mycat学习笔记》 第二篇. MySql 读写分离与日志分析——主从多结点

1    环境说明 接上篇环境   <Mycat学习笔记> 第一篇. MySql 读写分离与日志分析——主从单结点 http://www.cnblogs.com/kaye0110/p/5134588.html 增加一套 mysql 实例,端口为3308 ,通过Binlog方式同步主机情况 localhost : 3306 主机,    在mycat 中配置为 writehost 1 localhost : 3307 从机 a ,在mycat 中配置为 readhost localhost :

学习笔记-性能测试-工具篇-LR-12的安装

进入LR的官方网站下载好最新的两个版本 两个安装文件: 先解压到同一文件夹 点击安装程序,选择安装的路径会自动安装: 安装完成后出现三个主要组件: 学习笔记-性能测试-工具篇-LR-12的安装,布布扣,bubuko.com