爬虫基础之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相关推荐

  1. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  2. Python网络爬虫(一):爬虫基础

    Python网络爬虫(一)爬虫基础 一.爬虫基础 1.HTTP基本原理 1.1URI和URL URI,全称:Uniform Resource Identifier,即统一资源标志符:URL,全称:Un ...

  3. 网络爬虫(一):爬虫基础原理

    一.学习前言 学习完Python语言后,总觉得有难以用武之地,纸上学来终觉浅,绝知此事要躬行,如果不加以使用就很容易忘记,为了加深python语言的记忆和理解,我选择学习网络爬虫的技术来进一步提升自己 ...

  4. Python网络爬虫基础

    目录 目录 一.HTML基础 1.HTML相关概念&发展历史 1.1HTML及相关概念的介绍 1.2HTML发展历史 ​编辑2.WEB标准.W3C/ECMA相关概念 2.1WEB标准的概念及组 ...

  5. python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  6. Python爬虫辅助利器PyQuery模块的安装使用攻略

    这篇文章主要介绍了Python爬虫辅助利器PyQuery模块的安装使用攻略,PyQuery可以方便地用来解析HTML内容,使其成为众多爬虫程序开发者的大爱,需要的朋友可以参考下 Windows下的安装 ...

  7. 爬虫基础(一)之概念、作用、分类和流程

    爬虫基础(一)之概念.作用.分类和流程 1. 爬虫的概念 模拟浏览器,发送请求,获取响应        浏览器相当于客户端 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(如网易云音乐)(主要 ...

  8. python 使用socks 爬虫_python爬虫基础之urllib的使用

    这篇文章主要介绍了python爬虫基础之urllib的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.urllib 和 urllib2的关系 在python2中,主要使用url ...

  9. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

最新文章

  1. 智能机器人热点技术大揭秘!
  2. 2019-5-6作业
  3. 计算机管理员英文是什么,超级管理员,超级管理员是什么,超级管理员英文 | 帮助信息-动天数据...
  4. itunes计算机无法启动,打开电脑中的iTunes显示Apple Mobile Device Service无法启动如何解决...
  5. 电子技术基础——基本共射放大电路
  6. 4.15 期货每日早盘操作建议
  7. Android 11 Bata 正式发布!闲鱼最新升级版 Flutter 技术电子书开放下载
  8. 02_星仔带你学Java之变量、常量、字面量、数据类型
  9. MySQL复制表-CREATE SELECT
  10. linux - nohup 命令 后一按回车就exit
  11. OpenCV/C++ 图片锐化
  12. 算法工程师应该具备哪些工程能力
  13. TI DSP 28335 ePWM实现单路带死区PWM
  14. 第十章 DCEP简介
  15. HTML做一个简单漂亮的旅游网页(纯html代码)重庆旅游 7页
  16. OA协同办公系统的发展趋势
  17. 单片机开发—呼吸灯的三种实现方法
  18. 华为Vo5G技术EPSFB
  19. 列存储与行存储的对比
  20. 建立在方块上的游戏帝国,《我的世界》为何有如此魅力?

热门文章

  1. 离线数据统计及词云图显示
  2. 企业发放工资的三个易错点!
  3. jon的秋招之旅9.3—9.19
  4. 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多...
  5. SQL语言的数据类型
  6. AidLux AI 应用案例悬赏征集活动正式启动!
  7. 习题 14.1 求一元二次方程式ax^2+bx+c=0的实根,如果方程没有实根,则输出有关警告信息。
  8. 将二进制数据转化成图片
  9. python request库下载_python3.6 urllib.request库实现简单的网络爬虫、下载图片
  10. 千亿云计算市场,下一个风口将是「管控云服务」?