基础库httplib2

一、是什么?

httplib2是一个功能强大的网络请求库,其实它和urllib、urllib、requests都是类似的库,安装库

pip install httplib2

二、怎么用?

既然它和其他的请求库类似那么就有着相似的方法,我们一条条来盘点下httplib2的强大方法!

1.基本请求
import httplib2
h = httplib2.Http('result')  #获取的内容写入result目录下
response, content = h.request('https://www.baidu.com/') 

最后会在result文件夹下生成一个名字叫

www.baidu.com,e81c1f5749545c5f7d247b3a100ffe62

这种的文件!可以使用记事本打开,里面会看见里面有这样的内容

status: 200
accept-ranges: bytes
cache-control: no-cache
connection: Keep-Alive
content-length: 227
content-type: text/html
date: Thu, 29 Nov 2018 14:37:43 GMT
etag: "5bfcae80-e3"
last-modified: Tue, 27 Nov 2018 02:40:00 GMT
p3p: CP=" OTI DSP COR IVA OUR IND COM "
pragma: no-cache
server: BWS/1.1
set-cookie: BD_NOT_HTTPS=1; path=/; Max-Age=300, BIDUPSID=4164BB9449141E2F6F953DED296ECE6E; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, PSTM=1543502263; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
strict-transport-security: max-age=0
x-ua-compatible: IE=Edge,chrome=1
content-location: https://www.baidu.com/

<html>
<head>
    <script> location.replace(location.href.replace("https://","http://")); </script> </head> <body> <noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript> </body> </html> 

基本的请求分成里两部分
1.创建Http对象,因为需要一个Http类型的对象
2.就是进行基本的POST/GET请求
而我们返回的内容分为两部分,一部分就是response包含的服务器返回的HTTP报头的内容,200表示请求成功,另一部分是Content里面包含的内容,也就是HTML页面,是服务器返回的实际数据

2.缓存

HTTPlib2有一个和其他的请求库不同的东西,我感觉还挺有意思,叫缓存,是的就是你想的那样,在一个默认的时间里你的同样的请求不会真的被发送到服务器,而是读取本地的缓存来返回给你!httplib2库默认是启用缓存,你可以设置不用缓存

response2, content2 = h.request('http://www.baidu.com/', headers={'cache-control':'no-cache'})

添加

headers={'cache-control':'no-cache'}

httplib2注意到我们添加了无缓存标头, 因此它完全绕过了它的本地缓存, 然后就会打开网络请求数据

3.提交表单
import urllib
import httplib2
from httplib2 import Http from urllib import urlencode h =httplib2.Http()#创建Http对象 data = dict(name="Joe", comment="A test comment")#准备添加的数据 response, content = h.request("http://www.baidu.com/", "POST", urlencode(data))#urlencode()#提交数据 print(response) {'status': '200', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding,User-Agent', 'server': 'Apache', 'connection': 'close', 'date': 'Tue, 31 Jul 2007 15:29:52 GMT', 'content-type': 'text/html'} 

提交的data为字典类型

4.设置cookie

其他的请求库都能设置cookie,httplib2当然也能,代码如下

import urllib
import httplib2
http = httplib2.Http()

url = 'http://www.baidu.com/'   
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}#账号和密码 headers = {'Content-type': 'application/x-www-form-urlencoded'} response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body)) headers = {'Cookie': response['set-cookie']} ###将获得cookie设置到请求头中,以备下次请求使用 url = 'http://www.baidu.com/' response, content = http.request(url, 'GET', headers=headers) ##本次请求就不用带用户名和密码 
5.设置代理

import httplib2
import socks ##需要第三方模块

httplib2.debuglevel=4
h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 8000))
response,content = h.request("http://www.baidu.com/")

6.request其他参数

Http.request(self, uri, method='GET', body=None, headers=None, redirections=5, connection_type=None)
执行单次的http请求
uri:一个以'http' 或 'https'开头的资源定位符字串,必须是一个绝对的地址
method:支持所有的http请求方式。如: GET, POST等
body:请求的附件数据,一个经过urllib.urlencode编码的字符串
headers:请求头信息,字典类型
redirections:最大的自动连续的重定向次数默认为5

7.httplib2的优点

httplib2,一个第三方的开源库,它比http.client更完整的实现了HTTP协议,同时比urllib.request提供了更好的抽象。
python的HTTP库不支持缓存,而httplib2支持。
Python的HTTP 库不支持最后修改时间检查,而httplib2 支持。
Python HTTP库不支持ETag,而httplib2支持.
Python的 HTTP库不支持压缩,但httplib2支持。
httplib2 帮你处理了永久重定向。它不仅会告诉你发生了永久重定向,而且它会在本地记录这些重定向,并且在发送请求前自动重写为重定向后的URL。



作者:Wangthirteen
链接:https://www.jianshu.com/p/1df0a1080c60
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/ningmengcaokanyu/p/10811669.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值