前言

Python关于爬虫的库挺多的,也各有所长。了解前端的也都知道, jQuery 能够通过选择器精确定位 DOM 树中的目标并进行操作,所以我想如果能用 jQuery 去爬网页那就 cool 了。

就搜了下看 Python 有没有与 DOM 相关的库什么的,还真找到了—— PyQuery !

PyQuery简介

pyquery相当于jQuery的python实现,可以用于解析HTML网页等。它的语法与jQuery几乎完全相同,对于使用过jQuery的人来说很熟悉,也很好上手。

引用作者的原话就是:

“The API is as much as possible the similar to jquery.” 。

安装

使用 pip 或者 easy_install 都可以。

注意:由于 pyquery 依赖于 lxml ,要先安装 lxml ,否则会提示失败。

安装pyquery:easy_install pyquery 或者pip install pyquery;

验证:输入 import pyquery 回车不报错即安装成功;

初始化

有 4 种方法可以进行初始化:

可以通过传入 字符串、lxml、文件 或者 url 来使用PyQuery。

from pyquery import PyQuery as pq

from lxml import etree

d = pq("")#传入字符串

d = pq(etree.fromstring(""))#传入lxml

d = pq(url='http://google.com/') #传入url

d = pq(filename=path_to_html_file) #传入文件

现在,d 就像 jQuery 中的 $ 一样了。

示例

通过一个简单的例子快速熟悉 pyquery 的用法,传入文件 example.html,内容如下:

first section111117-01-28 22:51second section222217-01-28 22:53

python 程序:

# -*- coding: utf-8 -*-

from pyquery import PyQuery as pq#引入 PyQuery

doc = pq(filename='example.html')# 传入文件 example.html

print doc.html() # html()方法获取当前选中的 html 块

print doc('.item-1') # 相当于 class 选择器,选取 class 为 item-1 的 html 块

data = doc('tr') # 选取

元素

for tr in data.items():# 遍历 data 中的

元素

temp = tr('td').eq(2).text() # 选取第3个

元素中的文本块

print temp

运行结果:

# print doc.html()

first section111117-01-28 22:51second section222217-01-28 22:53

# print doc('.item-1')

second section222217-01-28 22:53

# print tr('td').eq(2).text()

17-01-28 22:51

# print tr('td').eq(2).text()

17-01-28 22:53

操作

1、.html() 和.text():获取相应的 HTML 块或者文本内容,

p=pq("

Hello World!")

print p('head').html()# 获取相应的 HTML 块

print p('head').text()# 获取相应的文本内容

'''输出:

hello

Hello World!

'''

2、.('selector'):通过选择器来获取目标内容,

d = pq("

test 1

test 2

")

print d('div').html()# 获取

元素内的 HTML 块

print d('#item-0').text()# 获取 id 为 item-0 的元素内的文本内容

print d('.item-1').text()# 获取 class 为 item-1 的元素的文本内容

'''输出:

test 1

test 2

test 1

test 2

'''

3、.eq(index):根据索引号获取指定元素(index 从 0 开始),

d = pq("

test 1

test 2

")

print d('p').eq(1).text()# 获取第二个 p 元素的文本内容,

'''输出

test 2

'''

4、.find():查找嵌套元素,

d = pq("

test 1

test 2

")

print d('div').find('p') # 查找

内的 p 元素

print d('div').find('p').eq(0) # 查找

内的 p 元素,输出第一个 p 元素

'''输出:

test 1

test 2

test 1

'''

5、.filter():根据 class、id 筛选指定元素,

d = pq("

test 1

test 2

")

print d('p').filter('.item-1') # 查找 class 为 item-1 的 p 元素

print d('p').filter('#item-0') # 查找 id 为 item-0 的 p 元素

'''输出:

test 2

test 1

'''

6、.attr():获取、修改属性值,

d = pq("

test 1

test 2

")

print d('p').attr('id') # 获取

标签的属性 id

print d('a').attr('class','new')# 修改 标签的 class 属性为 new

'''输出:

item-0

test 2

'''

7、其他操作:

.addClass(value):添加 class;

.hasClass(name):判断是否包含指定的 class,返回 True 或 False;

.children():获取子元素;

.parents():获取父元素;

.next():获取下一个元素;

.nextAll():获取后面全部元素块;

.not_('selector'):获取所有不匹配该选择器的元素;

for i in d.items('li'): print i.text():遍历 d 中的 li 元素;

结语

以上的操作对于日常爬取一些小数据资料,基本足够使用了。当然,PyQuery 还有很多其他内容,这里就不做说明了,如果需要了解更多关于 PyQuery 的内容的可以去查看官方文档。

官方文档是英文的,但也比较容易阅读和理解。我找到了一个中文的教程网站,这里也提供出来。

python pyquery库_python解析HTML之:PyQuery库的介绍与使用相关推荐

  1. python beautifulsoup库_Python爬虫系列:BeautifulSoup库详解

    点击上方蓝字关注"程序员Bob"呀~ 每个人的生命都是通向自我的征途,是对一条道路的尝试,是一条小径的悄然召唤.人们从来都无法以绝对的自我之相存在,每一个人都在努力变成绝对自我,有 ...

  2. python 删除第三方库_python 安装移动复制第三方库操作

    一.绪论 在使用python开发过程中经常会使用到第三方库.因此就涉及到了如何安装.复制移动. 二.安装方式 第三方库的安装方式 1.python自带包管理器:使用pip命令自动安装.例如:pip i ...

  3. 用python画熊_Python数据可视化:Pandas库,只要一行代码就能实现

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章一级AI入门学习 ,作者小伍哥 刚接触Python的新手.小白,可以复制下面的链接去免费观 ...

  4. python有什么好玩的库_python有什么好玩的库

    python好玩的库有:1.PyGame,一个游戏开发框架:2.Pillow,一个有关图片操作处理的软件:3.Selenium,一款浏览器自动化测试框架:4.Asciimatics等等. Python ...

  5. python升级第三方库_python一键升级所有第三方库

    import pip from subprocess import call for dist in pip.get_installed_distributions(): call("pip ...

  6. python复制库_python 安装移动复制第三方库操作

    一.绪论 在使用python开发过程中经常会使用到第三方库.因此就涉及到了如何安装.复制移动. 二.安装方式 第三方库的安装方式 1.python自带包管理器:使用pip命令自动安装.例如:pip i ...

  7. python解析html的库_python解析html开发库pyquery使用方法

    例如 代码如下: 导演: 汤姆·提克威 / 拉娜·沃卓斯基 / 安迪·沃卓斯基 编剧: 汤姆·提克威 / 安迪·沃卓斯基 / 拉娜·沃卓斯基 主演: 汤姆·汉克斯 / 哈莉·贝瑞 / 吉姆·布劳德本特 ...

  8. python json库函数_python基础之JSON标准库

    一.序列化的一些简单概念 我们平常使用的python对象所进行的操作是在内存中,当程序关闭就会被清空,所以我们需要用一种合适的方法将这些数据保存下来. 为了将我们的数据进行永久存储,需要引入序列化(p ...

  9. python调用matlab工具库_Python第三方常用工具、库、框架等

    Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋 ...

最新文章

  1. [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
  2. 轰动程序员圈的大事:女程序员将代码写到退休,返聘再续传奇
  3. Waveform Audio 驱动(Wavedev2)之:WAV 驱动解析
  4. Linux/Unix 如何查看 man 搜索到的手册页(manual page)的位置及复制手册页的内容
  5. Jmeter使用流程及简单分析监控
  6. sklearn——AdaBoost应用
  7. Redis12-事件
  8. 深度神经网络 卷积神经网络_改善深度神经网络
  9. 《未来编年史》——关于地球未来2000年的预言
  10. 美国十大web2.0公司背后的故事
  11. 通过百度地图批量查询经纬度/通过经纬度批量查询县市
  12. BTA16可控硅固态继电器电路开发的有关问题
  13. 利用Autolisp提取天正墙体位置坐标
  14. mysql32位的能装在64位的电脑上吗_32位电脑能装64位系统吗|怎么看32位电脑可不可以装64位系统-系统城...
  15. 计算机小知识——键盘三颗灯含义
  16. 前端怎么画三角形_用CSS画一个三角形
  17. sysbench--实践--02--CPU测试
  18. 基于QT开发的开源局域网联机UNO卡牌游戏报告(附github仓库地址)
  19. C++:使用高斯-勒让德正交估计柯西主值 (CPV) 某些奇异积分(附完整源码)
  20. LeetCode题解汇总

热门文章

  1. ShareSDK集成微信、QQ、微博分享
  2. KMS的几个开源实现汇总
  3. C++学习之路 | PTA乙级—— 1042 字符统计 (20 分)(精简)
  4. java打开别人的代码报错_同样的代码,别人的可以运行我的报错,求解答
  5. 滤波器开发之二:基于算数平均的带阻平滑滤波器
  6. 动手学CV-目标检测入门教程4:模型结构
  7. 如何写一个数据库中间件以及需要准备的知识储备
  8. JAVA进阶教学之(StrngBuffer进行字符串拼接)
  9. mysql binary安装_mysql的二进制安装方式
  10. 添加日志_第五章springboot2.0添加aop日志实现记录请求地址