PyQuery

PyQueryPython崔老师爬虫课程听课笔记。

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

PyQuery 崔老师爬虫系列课程学习笔记

安装

pip install pyquery

初始化方法

字符串初始化

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> '''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('ul'))

URL初始化

from pyquery import PyQuery as pq
doc = pq(url='http://www.baidu.com')
print(doc('head'))

文件初始化

from pyquery import PyQuery as pq
doc = pq(filename='demo.html')
print(doc('li'))

基本CSS选择器

html = ''' <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> '''

from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li'))

查找元素

子元素

html = ''' <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> '''

from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)
list = items.children()
print(type(list))
print(list)
list = items.children('.active')
print(list)

父元素

html = ''' <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> '''

from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
container = items.parent()
print(type(container))
print(container)
html = ''' <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> '''


from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
parents = items.parents()#可以在括号里添加CSS选择标志
print(type(parents))
print(parents)

兄弟元素

html = ''' <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> '''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc(.list .item-0.activate)#出现空格表示选择内部的条目,,连续无空格表示并列选择关系
print(items.siblings())#获取兄弟元素

遍历

单个元素

html = ''' <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> '''
from pyquery import PyQuery as pq
doc = pq(html)
item = doc('.item-0.active')
print(item)
html = ''' <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> '''
from pyquery import PyQuery as pq
doc = pq(html)
lis = doc('li').items()
print(type(lis))
for li in lis:
    print(li)

获取信息

获取属性

html = ''' <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> '''

from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-1.active a')
print(a)
print(a.attr.href)
print(a.attr('href'))

获取文本

html = ''' <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> '''

from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.text())
<a href="link3.html"><span class="bold">third item</span></a>
third item
html = '<html><head><meta charset=utf-8><title>浙大美女校花 甜美神似张子萱</title><meta http-equiv=x-dns-prefetch-control content=on>'
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('title')
print(a.text())
浙大美女校花 甜美神似张子萱

获取HTML

html = ''' <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> '''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active')
print(a.html())

DOM操作

addClass、removeClass

html = ''' <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> '''
from pyquery import PyQuery as pq
doc = pq(html)#初始化
li = doc('.item-1.active')#选中这一标签
print(li)

li.removeClass('active')
print(li)
li.addClass('active')
print(li)

attr、css

html = ''' <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> '''
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挺重要

html = ''' <div class="wrap"> Hello, Word! <p> This is a paragraph.</p> </div> '''

from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.wrap')
print(a.text())
a.find('p').remove()
print(a.text())

其他DOM方法

伪类选择器

html = ''' <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> '''

from pyquery import PyQuery as pq
doc = pq(html)
li = doc('li:first-child')#获取第一个标签
print(li)
li = doc('li:last-child')#获取最后一个
print(li)
li = doc('li:nth-child(2)')#获取第二个
print(li)
li = doc('li:gt(2)')#获取第二个以后的,计数从0开始
print(li)
li = doc('li:nth-child(2n)')#获取偶数的标签
print(li)
li = doc('li:contains(second)')#获取包含“second”的
print(li)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年4月28日 下午5:40
下一篇 2022年4月28日 下午5:40


相关推荐

  • 关于转置卷积(反卷积)的理解[通俗易懂]

    关于转置卷积(反卷积)的理解[通俗易懂]本文地址:https://blog.csdn.net/isMarvellous/article/details/80087705,转载请注明出处。什么是转置卷积(反卷积)?转置卷积(TransposedConvolution)又称为反卷积(Deconvolution)。在PyTorch中可以使用torch.nn.ConvTranspose2d()来调用,在Caffe中也有对应的层deco…

    2022年6月21日
    30
  • anchorpoint什么意思_position relative

    anchorpoint什么意思_position relative转自 彻底理解position与anchorPoint如果已知layer的frame值,根据上面的结论,那么position的值便可以用下面的公式计算:position.x=frame.origin.x+anchorPoint.x*bounds.size.width;position.y=frame.origin.y+anchorPoint.y*

    2022年10月8日
    2
  • Spring中bean的作用域与生命周期

    Spring中bean的作用域与生命周期在Spring中,那些组成应用程序的主体及由SpringIoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bean相互间的依赖关系将通过配置元数据来描述。  Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?例如对于Web应用来

    2022年4月30日
    60
  • Windows10系统设置定时关机「建议收藏」

    Windows10系统设置定时关机「建议收藏」1.输入cmd运行命令提示符2.输入 shutdown–s–t3600   [注:3600为倒计时的秒数,此语句为系统在一小时后关机]/*shutdown命令的参数:shutdown-a 取消关机shutdown-s关机shutdown-f 强行关闭应用程序shutdown-m计算机名 控制远程计算机shutdown-i 显示“远程关机”图形用户界面,…

    2022年5月15日
    44
  • 2020最火的编程语言_2020年牛会掉价吗

    2020最火的编程语言_2020年牛会掉价吗大学新生看过来。

    2022年10月5日
    6
  • iloc[ ]函数(Pandas库)

    iloc[ ]函数(Pandas库)问题 iloc 函数是干什么的 回答 在数据分析过程中 很多时候需要从数据表中提取出相应的数据 而这么做的前提是需要先 索引 出这一部分数据 iloc 函数 属于 pands 库 全称为 indexlocatio 即对数据进行位置 location 索引 index 问题 iloc 函数怎么用 回答 iloc a b 其中 a 是行数 b 是列数 具体 a 和 b 的输入有以下几种形式 1 iloc a b 取第 a 行第 b 列的数据 注意 在 iloc 中认为数据中的行数和列数都是如图这样定义的图 1

    2026年3月26日
    3

发表回复

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

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