码迷,mamicode.com
首页 > 编程语言 > 详细

python3 爬虫之Pyquery的使用方法

时间:2018-02-15 15:57:25      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:targe   16px   http   四种   lambda   text   host   query   requests   

安装

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的使用方法

标签:targe   16px   http   四种   lambda   text   host   query   requests   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!