PyQuery模块

原文连接:http://www.nnzhp.cn/archives/630

PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了。

Pyquery需要依赖lxml模块,不装的话,使用会报错。

安装

pip install lxml
pip install pyquery

解析html的3种方式

from pyquery import PyQuery
html = """
<html><head><title>BestTest</title></head>
<body>
<div>
<p class="content">最专业的软件测试培训
<a href="http://www.besttest.cn" class="link" id="link1"><!--首页--></a>,
<a href="http://www.besttest.cn/page/3.html" class="link" id="link2">BestTest性能测试</a> and
<a href="http://www.besttest.cn/page/47.html" class="link" id="link3" target="_blank">BestTest自动化测试</a>;
课程详情请点击上面的链接.</p>
<p class="content">.这是广告植入.</p>
<p class="title">BestTest is best</p>
</div>
</body>
</html>
"""
# 解析html的3种方式
doc = PyQuery(url='http://www.nnzhp.cn') #指定url
doc2 = PyQuery(html) #指定html字符串
doc3 = PyQuery(filename='index.html') #指定文件
print(doc)
print(doc2)
print(doc3)

css选择器

css在bs模块里面也用过,用法差不多。具体如下

# css选择器
print(doc2('.link')) #通过class
print(doc2('#link1')) #通过id
print(doc2('.content,#link1')) #找到所有class为content和id为link1的
print(doc2('.content #link1')) #在content下面找到id为link1的元素
print(doc2('a'))#找到所有的a标签
print(doc2('[href]'))#找到所有带有href属性的元素
print(doc2('a[target=_blank]')#找到a标签下面target为_blank的

常用方法

eq方法,获取第几个元素
 
a_tags = doc2('a')
print(a_tags.eq(0))#a标签里面第一个
print(a_tags.eq(1))#a标签里面第二个
 
# items()
    #如果找到多个元素的话,想循环取元素的话,就得用.items()方法,items就是为了循环用的
a_tag = doc2('a')
for a in a_tag.items():
    print(a.text())

# text() 、html()
#text()方法是获取元素里面的文字的,html()是获取元素的html
 
a=doc2('.content')
print(a.html()) #html格式的
print(a.text()) #只有里面的文字
 
#find方法,查找元素
 
print(doc2.find('p').find('a'))#从所有的p标签里面找到a标签
print(doc2.find('p'))#找到所有的p标签
print(doc2.find('.content'))#找到所有class为content的
 
#filter方法,用来筛选
print(doc2.find('a').filter('#link1')) #先找到a标签,然后从a标签里面筛选出来id为link1的
 
#attr方法,获取属性
 
print(doc2('#link1').attr(('href')))#获取id为link1的href的属性值

个人新增

In [103]: html='''<a href="https://www.google.com" class="a1_test" id="link1">home</a>,
   .....: <a href="https://www.google.com" class="a2_test test" id="link2">BestTest</a>
   .....: <div class="div_test">
   .....: <div>div test</div>
   .....: <span>span test1</span>
   .....: <span>span test2</span>
   .....: </div>
   .....: '''
In [104]: doc=PyQuery(html)

对于class有多个属性的选择

In [107]: doc('.a2_test.test')
Out[107]: [<a#link2.a2_test.test>]

标签嵌套获取(子标签)

In [110]: doc('.div_test > div')
Out[110]: [<div>]

In [111]: doc('.div_test > div').text()
Out[111]: 'div test'

标签嵌套有相同的标签(子标签)

In [112]: doc('.div_test > span')
Out[112]: [<span>, <span>]

In [113]: doc('.div_test > span').eq(0).text()
Out[113]: 'span test1'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260