PyQuery简介
pyquery相当于jQuery的python实现,可以用于解析HTML网页等。它的语法与jQuery几乎完全相同,对于使用过jQuery的人来说很熟悉,也很好上手。
引用作者的原话就是:
“The API is as much as possible the similar to jquery.” 。
安装
使用 pip 或者 easy_install 都可以。
注意:由于 pyquery 依赖于 lxml ,要先安装 lxml ,否则会提示失败。
- 安装lxml:https://pypi.python.org/pypi/lxml/2.3/ (建议直接下载安装包,方便快捷);
- 安装pyquery:easy_install pyquery 或者pip install pyquery;
- 验证:输入
import pyquery
回车不报错即安装成功
初始化
有 4 种方法可以进行初始化:
可以通过传入 字符串、lxml、文件 或者 url 来使用PyQuery。
1 2 3 4 5 |
from pyquery import PyQuery as pq from lxml import etree d = pq(“<html></html>”)#传入字符串 d = pq(etree.fromstring(“<html></html>”))#传入lxml d = pq(url=‘http://google.com/’) #传入url d = pq(filename=path_to_html_file) #传入文件 |
现在,d 就像 jQuery 中的 $ 一样了。
字符串初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
html = ''' <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> ''' from pyquery import PyQuery as pq doc = pq(html) print(doc('li')) |
查找所有的li标签。输出结果如下:
1 2 3 4 5 |
<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> |
URL初始化
1 2 3 |
from pyquery import PyQuery as pq doc = pq(url='http://www.baidu.com') print(doc('head')) |
选出百度网站里面head标签里面的内容。
输出结果如下:
1 |
<head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=Edge"/><meta content="always" name="referrer"/><link rel="stylesheet" type="text/css" href="http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css"/><title>百度一下,你就知道</title></head> |
文件初始化
1 2 3 |
from pyquery import PyQuery as pq doc = pq(filename='demo.html') print(doc('li')) |
基本CSS选择器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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> ''' from pyquery import PyQuery as pq doc = pq(html) print(doc(' |