Go 2 Think

Just Think

Python爬虫:PyQuery库的安装与使用

前言

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 ,否则会提示失败。

  1. 安装lxml:https://pypi.python.org/pypi/lxml/2.3/    (建议直接下载安装包,方便快捷);
  2. 安装pyquery:easy_install pyquery或者pip install pyquery
  3. 验证:输入import pyquery回车不报错即安装成功;

初始化

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

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

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

示例

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

python 程序:

运行结果:

操作

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

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

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

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

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

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

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 的内容的可以去查看官方文档。

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

官方文档:https://pythonhosted.org/pyquery/index.html#

中文教程:http://www.geoinformatics.cn/lab/pyquery/

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

code