pyquery 学习
pyquery 是python仿照jQuery的严格实现,语法与jQuery几乎完全相同,所以对于学过前端的朋友们可以立马上手,没学过的小朋友也别灰心,我们马上就能了解到pyquery的强大.
1 安装
- pip install pyquery
2 官方文档
http://pyquery.readthedocs.io/
3 学习代码html代码
- 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>
- '''
4 字符串初始化
- 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
- # 格式化html文本,获取'$对象
- doc=pq(html) # doc ---> '$'
- #获取html文本下所有的li标签
- print(doc('li'))
结果
5 URL初始化
- from pyquery import PyQuery as pq
- #直接获取网页源码
- doc=pq(url='https://www.baidu.com')
- title=doc(':submit').attr.value
- print(title)
结果
6 文件初始化
- from pyquery import PyQuery as pq
- #读取文件
- doc = pq(filename='demo.html')
- print(doc('li'))
结果
7 基于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)
- #找id=container标签下 所有class=list标签下的 所有的li标签
- print(doc('#container .list li'))
结果
8 查找元素
子元素(不找孙子)
(链式寻找,doc($)找到的标签对象可以继续查找)
- 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)
- #先获取所有的class=list 标签
- items = doc('.list')
- #再获取所有的li标签
- lis=items('li')
- print(lis)
结果
- #获取当前标签的所有子标签
- lis=items.children()
- print(type(lis))
- print(lis)
结果
父元素(不找爷爷)
- 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>
- </html>
- '''
- from pyquery import PyQuery as pq
- doc = pq(html)
- items = doc('.list')
- #获取当前标签的父级别标签(不取爷爷标签)
- container = items.parent()
- print(type(container))
- print(container)
结果
9 遍历
- 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)
- #寻找class=items-0并且class=active的标签
- li = doc('.item-0.active')
- print(li)
结果
10 获取文本
- 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">我们一起high high</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)
- #定位到 a标签
- a = doc('.item-0.active a')
- print(a)
- #输出文本使用.text()
- print(a.text())
结果
11 获取HTML
- 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('.item-0.active')
- print(li)
- #获取对应 标签下的 html数据
- print(li.html())
结果
12 DOM操作
addClass、removeClass
- 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('.item-0.active')
- print(li)
- #给选定标签删除 class='active'
- li.removeClass('active')
- print(li)
- #给选定标签添加 class='active'
- li.addClass('active')
- print(li)
结果
attr、css
- 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('.item-0.active')
- print(li)
- #添加属性 name=link
- li.attr('name', 'link')
- print(li)
- #添加css font-size=14px
- li.css('font-size', '14px')
- print(li)
结果
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())
- #find 找到指定标签,remove 移除
- wrap.find('p').remove()
- print(wrap.text())
结果
其他DOM方法
13 伪类选择器
- 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 标签
- li = doc('li:first-child')
- print(li)
- #获取最后一个li 标签
- li = doc('li:last-child')
- print(li)
- #获取第2个li 标签
- li = doc('li:nth-child(2)')
- print(li)
- #获取索引>2 的li 标签
- li = doc('li:gt(2)')
- print(li)
- #获取偶数 的li标签
- li = doc('li:nth-child(2n)')
- print(li)
- #获取文本包含second的 li标签
- li = doc('li:contains(second)')
- print(li)
结果
更多CSS选择器可以查看 http://www.w3school.com.cn/css/index.asp
pyquery 学习的更多相关文章
- python爬虫之pyquery学习
相关内容: pyquery的介绍 pyquery的使用 安装模块 导入模块 解析对象初始化 css选择器 在选定元素之后的元素再选取 元素的文本.属性等内容的获取 pyquery执行DOM操作.css ...
- pyquery学习笔记
很早就听说了pyquery的强大.写了个简单的测试程序实验下. 思路是找个动态网页,先用PhantomJS加载,然后用PYQUERY解析. 1.随便找了个带表格的股票网页,里面有大量的股票数据,测试的 ...
- python之pyquery 学习
pyquery是jQuery的Python实现,可以用以解析HTML网页的内容.官网文档:http://pythonhosted.org/pyquery/ 下载:https://pypi.python ...
- 学习PyQuery库
学习PyQuery库 好了,又是学习的时光啦,今天学习pyquery 来进行网页解析 常规导入模块(PyQuery库中的pyquery类) from pyquery import PyQuery as ...
- 学习使用pyquery解析器爬小说
一.背景:个人喜欢在网上看小说,但是,在浏览器中阅读小说不是很方便,喜欢找到小说的txt版下载到手机上阅读,但是有些小说不太好找txt版本,考虑自己从网页上爬一爬,自己搞定小说的txt版本.正好学习一 ...
- 爬虫学习笔记(六)PyQuery模块
PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了. Pyquer ...
- python爬虫神器PyQuery的使用方法
你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有了一些 ...
- Pyquery API中文版
Pyquery的用法与jQuery相同,可以直接参考jQuery API学习.
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
随机推荐
- Linux 普通用户之间免密登陆
目的: 同台机器之间实现普通用户之间的免密登陆: NN01 的user1 免密登陆 user2 不同机器之间实现普通用户之间的免密登陆 :NN01 的user1 免密登陆 NN01 的user1 一. ...
- HTTP认证方式详解
HTTP请求报头: Authorization HTTP响应报头: WWW-Authenticate HTTP认证 基于 质询 /回应( challenge/response)的认证模式. ◆ ...
- vs2017 x64 ibatis.net 平台调用 Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 x64
遇到的问题: 1.x86无法调用x64 2.调用ibatis.net的providers.config无法通过节点反射查找Oracle.DataAccess, Version=2.112.1.0, C ...
- Git协作流程
Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的流程,让大家有效地合作,使得项目井井有条地发展下去."协作流程"在英语里,叫做"workflo ...
- java Socket多线程聊天程序
参考JAVA 通过 Socket 实现 TCP 编程 参考java Socket多线程聊天程序(适合初学者) 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包 ...
- POJ_2104_K-th Number_主席树
POJ_2104_K-th Number_主席树 题意:给定一个长度为n的序列,m次询问区间第k小 分析: 主席树模板 主席树可以理解成为n棵权值线段树的前缀和 但我们不能建n棵线段树,只需要对于每个 ...
- eclipse使用javaFX写一个HelloWorkld
------------------------------------------------ 操作系统:Ubuntu18.04 EclipseVersion: Oxygen.3a Release ...
- 命令提示符编译java
先新建一个文件夹kun,kun就是类所在的package.新建一个java文件. HelloWorld.java的代码如下: package kun; public class HelloWorld{ ...
- golang从简单的即时聊天来看架构演变
前言 俗话说的好,架构从来都不是一蹴而就的,没有什么架构一开始设计就是最终版本,其中需要经过很多步骤的变化,今天我们就从一个最简单的例子来看看,究竟架构这个东西是怎么变的. 我将从一个最简单的聊天室的 ...
- RK3399配置笔记
1. adb shell 默认超级管理员 在build/core/main.mk下将ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1改成ADDITIONAL_D ...