首页 > 编程语言 > 详细

python3 爬虫之Pyquery的使用方法

时间:2018-02-15 15:56:27      阅读:231      评论:0      收藏:0      [点我收藏+]

安装

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

API

 

python3 爬虫之Pyquery的使用方法

原文:https://www.cnblogs.com/nancyzhu/p/8449545.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!