例如
复制代码 代码如下:
复制代码 代码如下:
from pyquery import PyQuery as pq
doc=pq(url='http://movie.douban.com/subject/3530403/')
data=doc('.pl')
for i in data:
print pq(i).text()
输出
复制代码 代码如下:
导演
编剧
主演
类型:
官方网站:
制片国家/地区:
语言:
上映日期:
片长:
IMDb链接:
官方小站:
用法
用户可以使用PyQuery类从字符串、lxml对象、文件或者url来加载xml文档:
复制代码 代码如下:
from pyquery import PyQuery as pq
from lxml import etree
doc=pq("")
doc=pq(etree.fromstring(""))
doc=pq(filename=path_to_html_file)
doc=pq(url='http://movie.douban.com/subject/3530403/')
可以像jQuery一样选择对象了
复制代码 代码如下:
doc('.pl')
[<span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span#rateword.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <span.pl>, <p.pl>]
这样,class为'pl'的对象就全部选择出来了。
不过在使用迭代时需要对文本进行重新封装:
复制代码 代码如下:
for para in doc('.pl'):
para=pq(para)
print para.text()
导演
编剧
主演
类型:
官方网站:
制片国家/地区:
语言:
上映日期:
片长:
IMDb链接:
官方小站:
这里得到的text是unicode码,如果要写入文件需要编码为字符串。
用户可以使用jquery提供的一些伪类(但还不支持css)来进行操作,诸如:
复制代码 代码如下:
doc('.pl:first')
[<span.pl>]
print doc('.pl:first').text()
导演
Attributes
获取html元素的属性
复制代码 代码如下:
p=pq('
')('p')
p.attr('id')
'hello'
p.attr.id
'hello'
p.attr['id']
'hello'
赋值
复制代码 代码如下:
p.attr.id='plop'
p.attr.id
'plop'
p.attr['id']='ola'
p.attr.id
'ola'
p.attr(id='hello',class_='hello2')
[<p#hello.hell0>]
Traversing
过滤
复制代码 代码如下:
d=pq('
')
d('p').filter('.hello')
[<p#hello.hello>]
d('p').filter('#test')
[<p#test>]
d('p').filter(lambda i:i==1)
[<p#test>]
d('p').filter(lambda i:i==0)
[<p#hello.hello>]
d('p').filter(lambda i:pq(this).text()=='hello')
[<p#hello.hello>]
按照顺序选择
复制代码 代码如下:
d('p').eq(0)
[<p#hello.hello>]
d('p').eq(1)
[<p#test>]
选择内嵌元素
复制代码 代码如下:
d('p').eq(1).find('a')
[]
选择父元素
复制代码 代码如下:
d=pq('
Whoah!
there
')
d('p').eq(1).find('em')
[]
d('p').eq(1).find('em').end()
[]
d('p').eq(1).find('em').end().text()
'there'
d('p').eq(1).find('em').end().end()
[,
]
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8