Day33.爬虫基础之PyQuery
爬虫基础之PyQuery
文章目录
- 爬虫基础之PyQuery
- 前言
- 一. PyQuery 基本操作
- 1.1 初始化
- 1.1.1 字符串初始化
- 1.1.2 URL 初始化
- 1.1.3 文件初始化
- 1.2 基本 CSS 选择器
- 1.3 查找元素
- 1.3.1 子元素
- 1.4 遍历
- 1.4.1 单个元素
- 二. PyQuery 高级操作
- 2.1 获取信息
- 2.1.1 获取属性
- 2.1.2 获取文本
- 2.1.3 获取 HTML
- 2.2 [DOM操作](https://baike.baidu.com/item/DOM/8065263)
- 2.2.1 addClass, removeClass
- 2.2.2 attr, css
- 2.2.3 remove
- 2.3 伪类选择器
- 总结
前言
本文主要展示了PyQuery的基本使用和常见操作。
一. PyQuery 基本操作
1.1 初始化
1.1.1 字符串初始化
from pyquery import PyQuery as pqhtml = '''
<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)
print(doc('li')) # 类似于 CSS 选择器
1.1.2 URL 初始化
doc = pq(url="http://www.baidu.com")
print(doc('head'))
1.1.3 文件初始化
doc = pq(filename='demo.html')
print(doc('li'))
1.2 基本 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>
'''doc = pq(html)
print(doc('#container .list li'))
# '#' 表示id , '.' 表示下级 li 列表不用 '.'
1.3 查找元素
1.3.1 子元素
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)# 单纯的子节点
lis = items.children()
print(type(lis))
print(lis)# 子节点中带有某种元素
lis = items.children('.active')
print(type(lis))
print(lis)# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## 父节点
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>
'''
doc = pq(html)
items = doc('.list')
container = items.parent()
print(type(container))
print(container)
# 发现这里要取父节点的话,只会出现一级父节点,而且本级的结点本身也会展现出来。# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #parents = items.parents() # 父节点
print(type(parents))
print(parents)
# 与上面不同的是,这里使用的是parents(),然后展现的是上面两级的父节点。parent = items.parents('.wrap')
print(parent)# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
# 兄弟元素
li = doc('.list .item-0.active') # 后面的 ‘.’与前面没有空格,表示同级别结点
print(li.siblings())print(li.siblings('.active')) # 直接去特定的子节点
1.4 遍历
1.4.1 单个元素
li = doc('.item-0.active')
print(li)# +++++++++++++++++++++++++++++++++++++++++++ #
lis = doc('li').items()
print(type(lis))
for li in lis: print(li)
二. PyQuery 高级操作
2.1 获取信息
2.1.1 获取属性
from pyquery import PyQuery as pqhtml = '''
<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>
'''doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href'))
print(a.attr.href)
2.1.2 获取文本
print(a)
print(a.text)
2.1.3 获取 HTML
li = doc('item-0.active')
print(li)
print(li.html())
2.2 DOM操作
DOM表示分割文档中的信息的能力,包括添加、编辑,它还包含使用这些对象所必需的方法和属性。
2.2.1 addClass, removeClass
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)
2.2.2 attr, css
li = doc('.item-0.active')
print(li)
li.attr('name', 'link')
print(li)
li.css('font-size', '14px')
print(li)
2.2.3 remove
html = '''
<div class="wrap">Hello, World<p>This is a paragraph.</p></div>
'''doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())
wrap.find('p').remove()
print(wrap.text())
其他DOM方法 http://pyquery.readthedocs.io/en/latest/api.html
2.3 伪类选择器
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>
'''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)') # contains 内的 第二个。
print(li)
更多CSS选择器可以查看 http://www.w3school.com.cn/css/index.asp
官方文档 http://pyquery.readthedocs.io/
总结
今天主要是学习了PyQuery库的基础知识和简单的使用。其实这个库跟BeautifulSoup里面的CSS选择器很相似。对该库有兴趣的小伙伴可以观看官方文档进一步学习。
溜了遛了,脑壳疼。Loading(33/100)。。
Day33.爬虫基础之PyQuery相关推荐
- pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...
爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...
- Python网络爬虫(一):爬虫基础
Python网络爬虫(一)爬虫基础 一.爬虫基础 1.HTTP基本原理 1.1URI和URL URI,全称:Uniform Resource Identifier,即统一资源标志符:URL,全称:Un ...
- 网络爬虫(一):爬虫基础原理
一.学习前言 学习完Python语言后,总觉得有难以用武之地,纸上学来终觉浅,绝知此事要躬行,如果不加以使用就很容易忘记,为了加深python语言的记忆和理解,我选择学习网络爬虫的技术来进一步提升自己 ...
- Python网络爬虫基础
目录 目录 一.HTML基础 1.HTML相关概念&发展历史 1.1HTML及相关概念的介绍 1.2HTML发展历史 编辑2.WEB标准.W3C/ECMA相关概念 2.1WEB标准的概念及组 ...
- python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...
爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...
- Python爬虫辅助利器PyQuery模块的安装使用攻略
这篇文章主要介绍了Python爬虫辅助利器PyQuery模块的安装使用攻略,PyQuery可以方便地用来解析HTML内容,使其成为众多爬虫程序开发者的大爱,需要的朋友可以参考下 Windows下的安装 ...
- 爬虫基础(一)之概念、作用、分类和流程
爬虫基础(一)之概念.作用.分类和流程 1. 爬虫的概念 模拟浏览器,发送请求,获取响应 浏览器相当于客户端 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(如网易云音乐)(主要 ...
- python 使用socks 爬虫_python爬虫基础之urllib的使用
这篇文章主要介绍了python爬虫基础之urllib的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.urllib 和 urllib2的关系 在python2中,主要使用url ...
- java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识
原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...
最新文章
- 智能机器人热点技术大揭秘!
- 2019-5-6作业
- 计算机管理员英文是什么,超级管理员,超级管理员是什么,超级管理员英文 | 帮助信息-动天数据...
- itunes计算机无法启动,打开电脑中的iTunes显示Apple Mobile Device Service无法启动如何解决...
- 电子技术基础——基本共射放大电路
- 4.15 期货每日早盘操作建议
- Android 11 Bata 正式发布!闲鱼最新升级版 Flutter 技术电子书开放下载
- 02_星仔带你学Java之变量、常量、字面量、数据类型
- MySQL复制表-CREATE SELECT
- linux - nohup 命令 后一按回车就exit
- OpenCV/C++ 图片锐化
- 算法工程师应该具备哪些工程能力
- TI DSP 28335 ePWM实现单路带死区PWM
- 第十章 DCEP简介
- HTML做一个简单漂亮的旅游网页(纯html代码)重庆旅游 7页
- OA协同办公系统的发展趋势
- 单片机开发—呼吸灯的三种实现方法
- 华为Vo5G技术EPSFB
- 列存储与行存储的对比
- 建立在方块上的游戏帝国,《我的世界》为何有如此魅力?
热门文章
- 离线数据统计及词云图显示
- 企业发放工资的三个易错点!
- jon的秋招之旅9.3—9.19
- 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多...
- SQL语言的数据类型
- AidLux AI 应用案例悬赏征集活动正式启动!
- 习题 14.1 求一元二次方程式ax^2+bx+c=0的实根,如果方程没有实根,则输出有关警告信息。
- 将二进制数据转化成图片
- python request库下载_python3.6 urllib.request库实现简单的网络爬虫、下载图片
- 千亿云计算市场,下一个风口将是「管控云服务」?