python解析html开发库pyquery使用方法
admin
2023-07-31 02:04:20
0

例如

复制代码 代码如下:


导演: 汤姆·提克威 / 拉娜·沃卓斯基 / 安迪·沃卓斯基

编剧: 汤姆·提克威 / 安迪·沃卓斯基 / 拉娜·沃卓斯基

主演: 汤姆·汉克斯 / 哈莉·贝瑞 / 吉姆·布劳德本特 / 雨果·维文 / 吉姆·斯特吉斯 / 裴斗娜 / 本·卫肖 / 詹姆斯·达西 / 周迅 / 凯斯·大卫 / 大卫·吉雅西 / 苏珊·萨兰登 / 休·格兰特

类型: 剧情 / 科幻 / 悬疑

官方网站: cloudatlas.warnerbros.com

制片国家/地区: 德国 / 美国 / 香港 / 新加坡

语言: 英语

上映日期: 2013-01-31(中国大陆) / 2012-10-26(美国)

片长: 134分钟(中国大陆) / 172分钟(美国)

IMDb链接: tt1371111

官方小站:
电影《云图》

复制代码 代码如下:
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\’)
[, , , , , , , , , , , , , , , , , , , ]

这样,class为\’pl\’的对象就全部选择出来了。

不过在使用迭代时需要对文本进行重新封装:

复制代码 代码如下:
for para in doc(\’.pl\’):
    para=pq(para)
    print para.text()  
导演
编剧
主演
类型:
官方网站:
制片国家/地区:
语言:
上映日期:
片长:
IMDb链接:
官方小站:

这里得到的text是unicode码,如果要写入文件需要编码为字符串。
用户可以使用jquery提供的一些伪类(但还不支持css)来进行操作,诸如:

复制代码 代码如下:
>>> doc(\’.pl:first\’)
[]
>>> 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\’)
[]

Traversing
过滤

复制代码 代码如下:
>>> d=pq(\'

hello

world

\’)
>>> d(\’p\’).filter(\’.hello\’)
[]
>>> d(\’p\’).filter(\’#test\’)
[]
>>> d(\’p\’).filter(lambda i:i==1)
[]
>>> d(\’p\’).filter(lambda i:i==0)
[]
>>> d(\’p\’).filter(lambda i:pq(this).text()==\’hello\’)
[]

按照顺序选择

复制代码 代码如下:
>>> d(\’p\’).eq(0)
[]
>>> d(\’p\’).eq(1)
[]

选择内嵌元素

复制代码 代码如下:
>>> 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()
[

,

]

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...