安装
pip install pyquery
或者直接在PyCharm中import pyquery 提示没有的时候点击install就ok啦
初始化
在这里介绍四种初始化方式。
(1)直接字符串
from pyquery import PyQuery as pq
doc = pq("")
pq 参数可以直接传入 HTML 代码,doc 现在就相当于 jQuery 里面的 $ 符号了。
(2)lxml.etree
from lxml import etree
doc = pq(etree.fromstring(""))
可以首先用 lxml 的 etree 处理一下代码,这样如果你的 HTML 代码出现一些不完整或者疏漏,都会自动转化为完整清晰结构的 HTML代码。
(3)直接传URL
from pyquery import PyQuery as pq
doc = pq('http://www.baidu.com')
这里就像直接请求了一个网页一样,类似用 urllib2 来直接请求这个链接,得到 HTML 代码。
(4)传文件
from pyquery import PyQuery as pq
doc = pq(filename='hello.html')
可以直接传某个路径的文件名。
快速开始
现在我们以本地文件为例,传入一个名字为 hello.html 的文件,文件内容为
<div><ul><liclass="item-0">first itemli><liclass="item-1"><ahref="link2.html">second itema>li><liclass="item-0 active"><ahref="link3.html"><spanclass="bold">third itemspan>a>li><liclass="item-1 active"><ahref="link4.html">fourth itema>li><liclass="item-0"><ahref="link5.html">fifth itema>li>ul>div>
编写如下程序
from pyquery import PyQuery as pq
doc = pq(filename='hello.html')print doc.html()
print type(doc)
li = doc('li')
print type(li)
print li.text()
运行结果
"item-0">firstitem
"item-1"><a href="link2.html">seconditema>
"item-0 active"><a href="link3.html">"bold">thirditema>
"item-1 active"><a href="link4.html">fourthitema>
"item-0"><a href="link5.html">fifthitema>
'pyquery.pyquery.PyQuery'>
'pyquery.pyquery.PyQuery'>
firstitemseconditemthirditemfourthitemfifthitem
看,回忆一下 jQuery 的语法,是不是运行结果都是一样的呢?
在这里我们注意到了一点,PyQuery 初始化之后,返回类型是 PyQuery,利用了选择器筛选一次之后,返回结果的类型依然还是 PyQuery,这简直和 jQuery 如出一辙,不能更赞!然而想一下 BeautifulSoup 和 XPath 返回的是什么?列表!一种不能再进行二次筛选(在这里指依然利用 BeautifulSoup 或者 XPath 语法)的对象!
属性操作