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 = """
BestTest

最专业的软件测试培训 , BestTest性能测试 and BestTest自动化测试; 课程详情请点击上面的链接.

.这是广告植入.

BestTest is best

""" # 解析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='''home,
   .....: BestTest
   .....: 
.....:
div test
.....: span test1 .....: span test2 .....:
.....: ''' In [104]: doc=PyQuery(html)

对于class有多个属性的选择

In [107]: doc('.a2_test.test')
Out[107]: []

标签嵌套获取(子标签)

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

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

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

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

你可能感兴趣的:(PyQuery模块)