什么是PyQuery?
这是一个强大又灵活的网页解析库。
如果你觉得写正则太麻烦,
如果你觉得BeautifulSoup语法太难记,
如果你熟悉jQuery,
那么,PyQuery将会成为你的最佳实践!
#一个简单的例子
from pyquery import PyQuery as pq
html = '''
请在这里输入html代码
'''
doc = pq(html) #初始化PyQuery对象
print(doc('li')) #选择li标签
CSS选择器
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
print(doc('#container .list li')) #选择CSS属性,id前面加 # ,class前面加 .
查找元素
#用例: 使用find()方法,查找子元素
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list') #查找class=list的标签
print(items)
lis = items.find('li') #查找li标签 find()方法较为常用
print(lis)
使用children() 查找子元素
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list') #查找class=list的标签
lis = items.children() #获取class=list的子标签
print(lis)
父元素
#用例: 使用 parent()方法 选择父元素
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list') #查找class=list的标签
container = items.parent() #查找class=list标签的父标签
print(container)
parents() 祖父元素
#用例:使用parents()方法 选择父元素
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
parents = items.parents()
print(parents)
#这里我增加了一层 wrap,这样返回了所有的父元素
#下面的选择器 将再次筛选 选择器的选择 让我们看看结果
parent = items.parents('.wrap')
print(parent)
兄弟元素 siblings()
#用例:有关于siblings()的使用
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings())
print(li.siblings('.active'))
多元素查找
#用例: 多个元素遍历选择
#如果我们选择的是多个元素,我们则需要使用items()方法对其遍历
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
lis = doc('li').items()
print(type(lis))
for li in lis:
print(li)
获取属性
#获取信息
#用例: 获取属性
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.attr('href')) #以attr获取href的值
print(a.attr.href) #两种方法是一致的,用来获取属性的值
#用例: 获取文本
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a)
print(a.text()) #获取a标签text文本
获取html
#用例: 获取HTML
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active')
print(a)
print(a.html()) #获取a的html文本
DOM操作
#DOM操作
#addClass 和 removeClass
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)
attr 和 css
#用例: attr 和 css
html = '''
请在这里输入html代码
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-0.active')
print(li)
li.attr('name','link')
print(li)
li.css('font-size','14px')
print(li)
remove()
#用例: remove (相对使用比较频繁噢)
html = '''
<div class="wrap">
Hello,World
<p>This is a paragraph.</p>
</div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())
wrap.find('p').remove() #移除p标签
print(wrap.text())
使用CSS选择特定的标签
#使用CSS3 特定的伪类选择器,选择特定的标签
#用例: 伪类选择器
html = '''
<div class="wrap">
<div id="container">
<ul class="list">
<li class="item-0">first item</li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
</div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('li:first-child') #选择第1个 li 标签,注意 : 号写法
print(li)
li = doc('li:last-child') #选择最后1个 li 标签
print(li)
li = doc('li:nth-child(2)') #选择指定的,第2个li标签 ,child() 序号从1开始
print(li)
li = doc('li:gt(2)') #选择序号比3大的,也就是第3个 li 标签之后的 li 标签 (序号从0开始)
print(li)
li = doc('li:nth-child(2n)') #选择序号为偶数索引的 li 标签
print(li)
li = doc('li:contains(second)') #选择文本部分包含 second 的 li 标签
print(li)
#更多CSS选择器可以访问
#http://www.w3school.com.cn/css/index.asp
小白笔记 如有错误 请提醒修改
转载于:https://blog.51cto.com/dongxiaoyang/1962668