安装
pip install pyquery
官方文档:
https://pythonhosted.org/pyquery/
初始化方式(四种)
1. 直接字符串
from pyquery import PyQuery as pq doc = pq("<html></html>")
pq 参数可以直接传入 HTML 代码,doc 现在就相当于 jQuery 里面的 $ 符号了。
2. lxml.etree
from lxml import etree doc = pq(etree.fromstring("<html></html>"))
可以首先用 lxml 的 etree 处理一下代码,这样如果你的 HTML 代码出现一些不完整或者疏漏,都会自动转化为完整清晰结构的 HTML代码。
3. 直接传URL
from pyquery import PyQuery as pq doc = pq(‘http://www.baidu.com‘)
这里就像直接请求了一个网页一样,类似用 requests.get(url) 来直接请求这个链接,得到 HTML 代码。
4. 传文件
from pyquery import PyQuery as pq doc = pq(filename=‘hello.html‘)
可以直接传某个路径的文件名。
选择器操作
from pyquery import PyQuery as pq doc = pq(‘http://so.fengniao.com/index.php?action=Image&keyword=%E7%BE%8E%E6%99%AF‘) imgs = doc(‘img‘)#取到所有图片 li = doc(‘li‘) print(li.text())divs = doc(‘div‘)p = doc(‘p‘)
属性操作
from pyquery import PyQuery as pq doc = pq(‘http://so.fengniao.com/index.php?action=Image&keyword=%E7%BE%8E%E6%99%AF‘) div = doc(‘div‘) print(div.attr(‘id‘)) print(div.attr(‘id‘,‘xiding‘))
from pyquery import PyQuery as pq p = pq(‘<p id="hello" class="hello"></p>‘)(‘p‘) print p.addClass(‘beauty‘) print p.removeClass(‘hello‘) print p.css(‘font-size‘, ‘16px‘) print p.css({‘background-color‘: ‘yellow‘})
DOM操作
同样原汁原味的 jQuery 语法
from pyquery import PyQuery as pq p = pq(‘<p id="hello" class="hello"></p>‘)(‘p‘) print p.append(‘ check out <a href="https://pythonhosted.org/pyquery/api.html"><span>python</span></a>‘) print p.prepend(‘Oh yes!‘) d = pq(‘<div class="wrap"><div id="test"><a href="https://pythonhosted.org/pyquery/api.html">api</a></div></div>‘) p.prependTo(d(‘#test‘)) print p print d d.empty() print d
运行结果
<p id="hello" class="hello"> check out <a href="https://www.python.org/"><span>python</span></a></p> <p id="hello" class="hello">Oh yes! check out <a href="https://www.python.org/"><span>python</span></a></p> <p id="hello" class="hello">Oh yes! check out <a href="https://www.python.org/"><span>python</span></a></p> <div class="wrap"><div id="test"><p id="hello" class="hello">Oh yes! check out <a href="https://www.python.org/"><span>https://www.python.org/</span></a></p><a href="http://cuiqingcai.com">Germy</a></div></div> <div class="wrap"/>
DOM 操作也是与 jQuery 如出一辙。
遍历
遍历用到 items 方法返回对象列表,或者用 lambda,不过常用的还是items()
imgs = doc(‘img‘)#取到所有图片 list_imgs = [] for img in imgs.items(): list_imgs.append(img.attr(‘src‘))#将所有图片链接放到列表
网页请求
from pyquery import PyQuery as pq print pq(‘http://www.baidu.com/‘, headers={‘user-agent‘: ‘pyquery‘}) print pq(‘http://www.baidu.com/post‘, {‘foo‘: ‘bar‘}, method=‘post‘, verify=True)
Ajax
PyQuery 同样支持 Ajax 操作,带有 get 和 post 方法,不过不常用,一般我们不会用 PyQuery 来做网络请求,仅仅是用来解析。
PyQuery AJAX
API
原文地址:https://www.cnblogs.com/nancyzhu/p/8449545.html
时间: 2024-11-13 07:53:21