PyQuery笔记

PyQuery笔记1、初始化1.1、字符串初始化frompyqueryimportPyQueryaspyhtml=”’<div>  <ul>    <liclass="item-0">firstitem</li>    <liclass="item-1"><ahref="htt

大家好,又见面了,我是你们的朋友全栈君。

1、初始化

1.1、字符串初始化

from pyquery import PyQuery as py

html = '''
<div>
   <ul>
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''

doc = py(html)
print(doc('li'))

1.2、URL初始化

from pyquery import PyQuery as py

# 通过URL来获取
doc = py(url='http://www.baidu.com')
# <class 'pyquery.pyquery.PyQuery'>
print(type(doc('title')))
# 输出选中的head标签
print(doc('head'))

1.3、文件的初始化

from pyquery import PyQuery as py

# 通过文件来获取
doc = py(filename='demo1.html')
# <class 'pyquery.pyquery.PyQuery'>
print(type(doc('li')))
# 输出所有的li标签
print(doc('li'))

2、基本的CSS选择器

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''

doc = py(html)
# 选中idcontainer中的classlist中的li标签
print(doc('#container .list li'))

3、查找元素

3.1、子元素

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
# 获取classlist的元素
items = doc('.list')
# <class 'pyquery.pyquery.PyQuery'>
print(type(items))
print(items)
# 在先前找到的元素中获取li标签
lis = items.find('li')
# <class 'pyquery.pyquery.PyQuery'>
print(type(lis))
print(lis)
# 获取先前找到的元素中的所有子元素
lis2 = items.children()
print(type(lis2))
print(lis2)
# 获取先前找到的元素中的class为active的元素
li3 = items.children('.active')
print(li3)

3.2、父元素

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
# 获取classlist的元素
items = doc('.list')
# 获取所选元素的父元素
container = items.parent()
print(type(container))
print(container)
print("==========================")
# 获取所选元素的所有父元素
parents = items.parents()
print(type(parents))
print(parents)
print("==========================")
# 获取所选元素的所有父元素中classcontainer的元素
parent = items.parents('.container')
print(parent)

3.3、兄弟元素

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
# 获取classlist的元素
items = doc('.list')
li = doc('.list .item-0.active')
# 查找选中元素的所有兄弟元素(不包含自己)
print(li.siblings())
# 查找选中元素的所有兄弟元素中classactive的元素(不包含自己)
print(li.siblings('.active'))



4、遍历

4.1、单个元素

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)

# 选中单个单个元素
li = doc('.item-0.active')
print(li)

4.2、多个元素

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)

# 查找所有li标签
lis = doc('li').items()
# <class 'generator'>
print(type(lis))
forli inlis:
   print(li)



5、获取信息

5.1、获取属性

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
a = doc('.item-0.active a')
# <a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a>
print(a)
# link3.html    获取选中标签的href属性
print(a.attr('href'))
# link3.html
print(a.attr.href)

5.2、获取文本

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
a = doc('.item-0.active a')
# <a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a>
print(a)
# 获取a标签的内容
print(a.text())

5.3、获取HTML

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
li = doc('.item-1.active')
# <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
print(li)
# 获取li标签的HTML
print(li.html())



6、DOM操作

6.1、addClass、removeClass

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
li = doc('.item-0.active')
print(li)
# 移除class
li.removeClass('active')
print(li)
# 添加class
li.addClass('active')
print(li)

6.2、attr、css

from pyquery import PyQuery as py

html = '''
<div id="container">
   <ul class="list">
        <li class="item-0">first item</li>
        <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
        <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
        <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
    </ul>
</div>
'''
doc = py(html)
li = doc('.item-0.active')
print(li)
# 添加name属性
li.attr('name', 'link')
print(li)
# 添加css样式
li.css('font-size', '14px')
print(li)

6.3、remove

from pyquery import PyQuery as py

html = '''
<div class="wrap">
   Hello, World
   <p>This is a paragraph.</p>
</div>
'''
doc = py(html)
wrap = doc('.wrap')
print(wrap.text())
# 在选择的元素中找到p标签并移除
wrap.find('p').remove()
print(wrap.text())

6.4、其他DOM方法

http://pyquery.readthedocs.io/en/latest/api.html



7、伪类选择器

from pyquery import PyQuery as py

html = '''
<div class="wrap">
   <div id="container">
       <ul class="list">
            <li class="item-0">first item</li>
            <li class="item-1"><a href="https://ask.hellobi.com/link2.html">second item</a></li>
            <li class="item-0 active"><a href="https://ask.hellobi.com/link3.html"><span class="bold">third item</span></a></li>
            <li class="item-1 active"><a href="https://ask.hellobi.com/link4.html">fourth item</a></li>
            <li class="item-0"><a href="https://ask.hellobi.com/link5.html">fifth item</a></li>
        </ul>
    </div>
</div>
'''

doc = py(html)
# 找到第一个li
li = doc('li:first-child')
print(li)
# 找到最后一个li
li = doc('li:last-child')
print(li)
# 找到第二个li
li = doc('li:nth-child(2)')
print(li)
# 找到第三个到最后的li
li = doc('li:gt(2)')
print(li)
# 找到第偶数个li
li = doc('li:nth-child(2n)')
print(li)
# 找到内容包含secondli
li = doc('li:contains(second)')
print(li)

更多的选择器 

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



8、官方文档

http://pyquery.readthedocs.io/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131346.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月29日 下午7:00
下一篇 2022年4月29日 下午7:00


相关推荐

  • JAVA写文本编辑器(一)

          作业题,花了整整两天终于搞出来了,今天给大家整理一下思路。      这里用swing,awt写的。        我们大概要做成一个电脑的记事本那样的一个编辑器。可以调整字体,字号,颜色。能够打开、保存文件,新建窗口,点击退出,还有一个关于介绍的窗口。整体看起来功能不是很多,只要一部分一部分的去完成就很好办了。      关键词:JAVA文本编辑器,      思路…

    2022年4月6日
    71
  • CTPN理解

    CTPN理解CTPNpipline 类似于 fasterrcnn 的二阶段检测算法 通过 anchor 作为中间元素进行回归 不同之处是增加了 LSTM 单元 anchor 固定宽度为 16 个像素 高度设定为 10 个值 ctpn 中的 anchor 图片来自这里 IOU 的计算 由于 anchor 指定宽度 16 所以对 GoundTruth 的坐标也进行变换 得到宽度为 16 的 GT 和 fasterrcnn 一样计算 anchor 与 GT 的 IOU RPN 为 LSTM 输出序列经 fc 后得到部分 CTPN 中的 RPN 图片来自这里 pro

    2026年3月17日
    2
  • 突发!马云刚发声谈AI 阿里千问核心负责人林俊旸辞职

    突发!马云刚发声谈AI 阿里千问核心负责人林俊旸辞职

    2026年3月12日
    2
  • C语言 Socket TCP通信

    C语言 Socket TCP通信TCP简介传输控制协议(TCP)是一种网络通信协议,旨在通过Internet发送数据包。TCP是OSI层中的传输层协议,用于通过传输和确保通过支持网络和Internet传递消息来在远程计算机之间创建连接。

    2022年7月13日
    21
  • 撸一个简易聊天室,不信你学不会实时消息推送(附源码)

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:糊糊糊糊糊了 www.cnblogs.com/rynxiao/p/13825438.html 分不清轮询、长轮…

    2021年6月26日
    112
  • 施密特触发器电路及工作原理详解

    施密特触发器电路及工作原理详解1 什么叫触发器施密特触发电路 简称 是一种波形整形电路 当任何波形的信号进入电路时 输出在正 负饱和之间跳动 产生方波或脉波输出 不同于比较器 施密特触发电路有两个临界电压且形成一个滞后区 可以防止在滞后范围内之噪声干扰电路的正常工作 如遥控接收线路 传感器输入电路都会用到它整形 施密特触发器一般比较器只有一个作比较的临界电压 若输入端有噪声来回多次穿越临界电压时 输出端即受到

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号