什么是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
小白笔记 如有错误 请提醒修改