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

Windows下的安装:
下载地址:https://pypi.python.org/pypi/pyquery/#downloads
下载后安装:

1 C:\Python27>easy_install E:\python\pyquery-1.2.4.zip

也可以直接在线安装:

1 C:\Python27>easy_install pyquery 我是一名python开发工程师,整理了一套python的学习资料,从基础的python脚本到web开发、爬虫、
数据分析、数据可视化、机器学习、面试真题等。想要的可以进群:688244617免费领取

pyquery是一个类似jquery的python库,可以使用像jquery那样的语法来提取网页中的任何数据,这个用于html网页的数据提取和挖掘还是一个很不错的第三方库的。下面我们来看下pyquery的用法有哪些。

从html字符串中提取信息

#!/usr/bin/python
# -*- coding: utf-8 -*-from pyquery import PyQuery as pq
html = '''
<html>
<head><title>this is title</title>
</head>
<body><p id="hi">Hello, World</p><p id="hi2">Nihao</p><div class="class1"><img src="1.jpg" /></div><ul><li>list1</li><li>list2</li></ul>
</body>
</html>
'''
d=pq(html)print d('title') # 相当于css选择器,根据html标签获取元素
print d('title').text() # text()方法获取当前选中的文本块print d('#hi').text() # 相当于id选择器,直接根据id名获取元素
print d('p').filter('#hi2').text() # 可以根据id或class得到指定元素
print d('.class1') # 相当于class选择器
print d('.class1').html() # html()方法获取当前选中的html块
print d('.class1').find('img').attr('src') # 查找嵌套元素,并选中属性
print d('ul').find('li').eq(0).text() # 根据索引号获取多个相同html元素中的某一个
print d('ul').children() # 获取所有子元素
print d('ul').children().eq(0) #根据索引获取子元素
print d('img').parents() # 获取父元素
print d('#hi').next() # 获取下一个元素
print d('#hi').nextAll() #获取后面全部元素块
print d('p').not_('#hi2') # 返回不匹配选择器的元素
# 遍历所有匹配的元素
for i in d.items('li'):print i.text()
print [i.text() for i in d.items('li')] # 遍历用于列表推倒
print d.make_links_absolute(base_url='http://www.baidu.com') # 把html文档中的相对路径变为绝对路径

从url或本地html文件中提取信息上面的代码段给出了pyquery常用的操作方法。我们先定义了一段html代码,然后利用pyquery的一系列方法对该html代码进行了操作,主要是获取特定的元素以及文本等。当然,pyquery不仅仅能够获取元素,还能进行设置元素属性、增加元素等功能,鉴于我们最常用的就是上面代码中用到的方法,这里就不再对其他方法进行介绍了。

当然,pyquery也不仅仅可以解析像上面的html字符串,还可以这样:

1 d = pq(url='http://www.baidu.com/')

我们可以直接加载一个URL,和上面的操作方法没有任何区别。这种方法默认使用urllib模块进行http请求,但如果你的系统中安装了requests的话,那么就会使用requests来进行http请求,这也就意味着你可以使用requests的任何参数,比如:

1 pq('http://www.baidu.com/', headers={'user-agent': 'pyquery'})

或者,如果你在你的本地已经有了对应的html文件,那么还可以这样:

1 d = pq(filename=path_to_html_file)

上面的写法直接指定了本地的html文件,且操作方法仍然与上面的相同。
可以看到,pyquery给我们提供充分的便利性来进行任何元素的选取,就像jquery一样。

利用pyquery抓取豆瓣电影top250

看完了pyquery的语法,我们来看一个实例,抓取豆瓣电影top250。
因为豆瓣反爬虫反的厉害,运行几次就没法再抓了,我只好先用requests把页面下载下来,直接使用pyquery分析页面的方法来提取信息:

1 from pyquery import PyQuery as pq
2 import requests
3
4 head_req = {
5  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
6  'Referer':'https://movie.douban.com/top250?start=0',
7
8 }
9 r=requests.get("https://movie.douban.com/top250?start=0",headers=head_req)
10 with open("1.html","wb") as html:
11  html.write(r.content)
12
13 d=pq(filename="1.html")
14
15 # print d('ol').find('li').html()
16 for data in d('ol').items('li'):
17  print data.find('.hd').find('.title').eq(0).text()
18  print data.find('.star').find('.rating_num').text()
19  print data.find('.quote').find('.inq').text()
20  print

运行下看看结果:

肖申克的救赎
9.6
希望让人自由。这个杀手不太冷
9.4
怪蜀黍和小萝莉不得不说的故事。阿甘正传
9.4
一部美国近现代史。霸王别姬
9.4
风华绝代。美丽人生
9.5
最美的谎言。千与千寻
9.2
最好的宫崎骏,最好的久石让。辛德勒的名单
9.4
拯救一个人,就是拯救整个世界。海上钢琴师
9.2
每个人都要走一条自己坚定了的路,就算是粉身碎骨。机器人总动员
9.3
小瓦力,大人生。盗梦空间
9.2
诺兰给了我们一场无法盗取的梦。泰坦尼克号
9.1
失去的才是永恒的。三傻大闹宝莱坞
9.1
英俊版憨豆,高情商版谢耳朵。放牛班的春天
9.2
天籁一般的童声,是最接近上帝的存在。忠犬八公的故事
9.2
永远都不能忘记你所爱的人。龙猫
9.1
人人心中都有个龙猫,童年就永远不会消失。大话西游之大圣娶亲
9.1
一生所爱。教父
9.2
千万不要记恨你的对手,这样会让你失去理智。乱世佳人
9.2
Tomorrow is another day.天堂电影院
9.1
那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰。当幸福来敲门
8.9
平民励志片。搏击俱乐部
9.0
邪恶与平庸蛰伏于同一个母体,在特定的时间互相对峙。楚门的世界
9.0
如果再也不能见到你,祝你早安,午安,晚安。触不可及
9.1
满满温情的高雅喜剧。指环王3:王者无敌
9.1
史诗的终章。罗马假日
8.9
爱情哪怕只有一天。

当然这只是第一页的25条,我们已经知道了豆瓣电影top250的url是

https://movie.douban.com/top250?start=0

start参数从0,每次加25,直到

https://movie.douban.com/top250?start=225
所以可以写个循环把它们都抓下来。

觉得文章还不错的话不妨点个赞,有任何建议或看法欢迎大家在评论区分享讨论!

Python爬虫辅助利器PyQuery模块的安装使用攻略相关推荐

  1. 爬虫解析利器PyQuery详解及使用实践

    作者:叶庭云 整理:Lemon 爬虫解析利器 PyQuery详解及使用实践 之前跟大家分享了 selenium.Scrapy.Pyppeteer 等工具的使用. 今天来分享另一个好用的爬虫解析工具 P ...

  2. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  3. Python下对setup.py模块的安装方法

    Python下对setup.py模块的安装方法 setup.py文件的build和install setup.py文件的build和install 举例说明 在终端进入该模块文件的目录 接着输入 py ...

  4. Py之Pyinstaller:Python库之Pyinstaller简介、使用方法、安装详细攻略

    Py之Pyinstaller:Python库之Pyinstaller简介.使用方法.安装详细攻略 目录 Pyinstaller简介 Pyinstaller安装 Pyinstaller使用方法 1.使用 ...

  5. Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略

    Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略 目录 双下划线介绍 1.关于双下划线的函数或方法或属性 双下划线介绍 1.关于双下划线的函数或方法或属性 __name_ ...

  6. java做flv直播服务器,EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略...

    EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持RTMP ...

  7. 王牌战士辅助工具,快速升级刷金币攻略

    王牌战士辅助工具,快速升级刷金币攻略 1.每日任务 完成新手指引后,会开启每日任务,根据任务提示去完成,可以获得大量的经验. 2.完成主线和支线任务 前期主线支线任务的升级速度很快,在有体力的情况下选 ...

  8. Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略

    Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略 目录 Python与文件夹那些事 1.创建/删除文件/文件夹 1.创建文件夹

  9. mac 安装win7 攻略

    mac 安装win7 攻略 **这两天将2013的mac air 重装win7 ,网上百度一堆安装攻略,下载不少版本的iso 安装文件,均无法安装,或者进入安装界面后鼠标键盘失效,无法安装,折腾2天成 ...

最新文章

  1. 啥不懂也能动手搭建属于自己的博客网站
  2. 零基础小白学Java难度大不大
  3. ComputeShader中Counter类型的使用
  4. iOS APP之本地数据存储(译)
  5. 配置SQL Server 2012 AlwaysOn ——step1 建立AD域及DNS配置
  6. maven 报错一站式解决方案
  7. 去西藏旅游一次要花多少钱,还有8/9月份去那边适合嘛?
  8. mysql 索引重复 更新_MySQL——ON DUPLICATE KEY UPDATE添加索引值实现重复插入变更update...
  9. 2014腾讯实习生招聘数组墙算法
  10. 远程桌面 vs 虚拟桌面 vs 虚拟机区别
  11. cisco privilege权限
  12. 爬虫登陆实战 --- QQ音乐扫码登陆
  13. Todesk一直显示正在连接本地连接
  14. Weighted Quick Union
  15. 卷积系列:Deconvolution(反卷积)/Transpose Convolution(转置卷积)/Fractional convolution
  16. python web py入门-1-web.py简介和安装
  17. win10蓝牙功能无法打开的解决办法
  18. c语言尾插法步骤,C语言尾插法链表
  19. 企业为何需要建立统一的复用型软件平台?
  20. C语言之格式化输出字符

热门文章

  1. java(九)-方法引用, Stream流,File类 , 递归 ,字节流
  2. 仿QQ空间说说TextView内容显示、收起
  3. 设计原则:面向对象设计原则详解
  4. 怎么用计算机打出派,如何在电脑上打出圆周率“π”。 懂得这些技巧就够了
  5. Angular6向Angular7跨越
  6. 百度智能云HDR全链路解决方案业内首发!
  7. vue项目打包app问题解决
  8. Redis(一):Redis的持久化的原理和操作
  9. java的特点(java的特点不包括)
  10. Kubernetes 一键部署利器:kubeadm