Python实现HTTP请求

python 中实现 HTTP 请求有三种方式,分别为 urllib2/urllib、httplib/urllib 和 Requests。

urllib2/urllib

1.基本请求和响应模型

urllib2 和 urllib 是 Python 中的两个内置模块,实现 HTTP 请求时,以 urllib2 为主,urllib 为辅。urllib2 模块提供了 urliopen() 方法,可以向指定的 URL 发出请求来获取数据。

2.请求头 headers 处理

请求头信息可以直接与 URL 一起放到 Requset() 方法里,也可以使用 add_header() 方法添加请求头信息。

3.Cookie 处理

urllib2 对 Cookie 的处理是自动的,使用 CookieJar 函数进行 Cookie 的管理。我们也可以通过设置请求头中的 Cookie 域来自定义添加 Cookie 的内容。

4.设置超时处理的三种方法

在 python2.6 之前的版本,urllib2 的 API 并没有 Timeout 的设置,要设置 Timeout 值,只能通过设置 Socket 的全局 Timeout 值实现。而在 python2.6 及新的版本中,urlopen() 函数提供了对 Timeout 的设置。

5.获取 HTTP 响应码

对于 200 OK 来说,urlopen() 方法返回的 response 对象的 getcode() 方法可以得到该 HTTP 响应码,但是对于其他类型的响应码,urlopen() 方法会抛出异常,这样需要通过异常对象来获取响应码。

6.重定向

urllib2 默认情况下会针对 HTTP 3XX 返回码自动进行重定向动作。要检测是否发生了重定向动作,只要检查一些 Response 的 URL 和 Resquest 的 URL 是否一致就可以了。

7.Proxy 代理

urllib2 默认使用环境变量 http_proxy 来设置 HTTP Proxy;也可以使用 ProxyHandler 在程序中动态设置代理。

使用 urllib2.install_opener() 方法会全局设置代理,不利于更细粒度的控制,可以使用 opener.open() 代替全局的 urlopen() 方法使用不同的代理。

httplib/urllib

httplib 模块是一个底层基础模块,可以了解建立 HTTP 请求的每一步,正常情况下开发用的很少。

Requests

1.Requests 安装

Python 中 Requests 模块实现 HTTP 请求的方式非常简单,操作更加人性化。Requests 库是第三方模块,需要额外安装,其源码开源,位于 https://github.com/requests/requests 上。安装 requests 方式有两种:

1.直接在 Terminal 上输入命令 pip install requests;

2.下载 [requests 源码](https://github.com/requests/requests/releases),然后解压,在 Terminal 中进入解压后的目录,运行 setup.py 文件即可。

2.基本请求和响应模型

3.响应码 code 和请求头 headers 处理

4.Cookie 处理

5.重定向与历史信息

6.超时设置

7.代理设置

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106G0V8P100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励