Python Requests模块快速入门

Requests是python的一个HTTP客户端库,跟urllib,urllib2类似。它比urllib更加方便,可以节约我们大量的工作,它比urllib更加Pythoner。

安装Requests

通过pip安装

$pipinstallrequests

或者,下载代码后安装:

$wgethttps://github.com/requests/requests/tarball/master

$mvmasterrequests.tgz

$tarxzfrequests.tgz

$cdrequests-requests-3dc84cd

$pythonsetup.pyinstall

发送请求

使用Requests发送网络请求非常简单。

>>>importrequests#导入Requests模块

>>>result=requests.get('http://www.pythontab.com')#生成Response对象

>>>result.status_code#返回码

200

>>>result.headers['content-type']#返回头部信息

'text/html;charset=utf8'

>>>result.encoding#编码信息

'utf-8'

>>>result.content#内容部分

为URL传递参数

你也许经常想为URL的查询字符串(querystring)传递某种数据。如果你是手工构建URL,那么数据会以键/值对的形式置于URL中,跟在一个问号的后面。例如,www.pythontab.com?version=python3。Requests允许你使用params关键字参数,以一个字典来提供这些参数。举例来说,如果你想传递version=python3和keywords=pythontab到www.pythontab.com,那么你可以使用如下代码:

>>>data={'version':'python3','keywords':'pythontab'}

>>>result=requests.get("http://www.pythontab.com",params=data)

>>>printresult.status_code

200

原始响应内容

在罕见的情况下你可能想获取来自服务器的原始套接字响应,那么你可以访问r.raw。如果你确实想这么干,那请你确保在初始请求中设置了stream=True。具体的你可以这么做:

>>>result=requests.get('http://www.pythontab.com',stream=True)

>>>result.raw

>>>result.raw.read(10)

'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

定制请求头

如果你想为请求添加HTTP头部,只要简单地传递一个dict给headers参数就可以了。

例如,在前一个示例中我们没有指定content-type:

>>>importrequests

>>>url='http://www.pythontab.com'

>>>data={'version':'python3','keywords':'pythontab'}

>>>headers={'content-type':'application/json'}

>>>result=requests.post(url,data=json.dumps(data),headers=headers)

错误与异常

遇到网络问题(如:DNS查询失败、拒绝连接等)时,Requests会抛出一个ConnectionError异常。

遇到罕见的无效HTTP响应时,Requests则会抛出一个HTTPError异常。

若请求超时,则抛出一个Timeout异常。

若请求超过了设定的最大重定向次数,则会抛出一个TooManyRedirects异常。

所有Requests显式抛出的异常都继承自requests.exceptions.RequestException。

其他常用方法

result.content#获取二进制响应内容

result.json()#JSON响应内容

result.headers#响应头内容

result.cookies#cookie内容

result.history#请求历史

以上内容为大家介绍了PythonRequests模块快速入门,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/

推荐阅读

    linux清空信息的命令?

    linux清空信息的命令?,信息,系统,设备,情况,命令,暂停,状态,发行,数字,文件,L

    linux复制内容命令?

    linux复制内容命令?,系统,文件,目录,命令,源文件,目标,选项,文件夹,参数,存

    工作中linux脚本命令?

    工作中linux脚本命令?,系统,工作,设备,中心,标准,软件,脚本,命令,用户,方式,

    linux网络服务命令?

    linux网络服务命令?,系统,地址,网络,基础,设备,信息,服务,工作,名称,标准,配

    linux命令怎么给参数?

    linux命令怎么给参数?,工作,认证,系统,地址,信息,密码,地方,命令,目录,文件,L

    linux命令行连数据库?

    linux命令行连数据库?,地址,服务,信息,名字,数据库,密码,网络,一致,软件,系

    linux网络探测的命令?

    linux网络探测的命令?,网络,系统,服务,检测,信息,地址,工具,电脑,命令,状态,l

    linux命令参数的作用?

    linux命令参数的作用?,系统,工作,命令,信息,标准,名称,位置,下来,在线,档案,

    linux命令行看代码?

    linux命令行看代码?,代码,基础,系统,命令,数字,工作,情况,进程,程序,终端,在L

    linux命令代码怎么看?

    linux命令代码怎么看?,时间,系统,代码,命令,状态,工具,情况,电脑,实时,基础,l

    linux打通网络命令?

    linux打通网络命令?,网络,系统,地址,信息,密码,工具,命令,工作,软件,服务,lin

    linux重启网络命令?

    linux重启网络命令?,网络,标准,工作,设备,系统,名称,服务,命令,网络服务,提

    linux命令只刷新参数?

    linux命令只刷新参数?,工作,系统,地址,信息,命令,目录,管理,标准,文件,功能,L

    Python网络爬虫教程

    Python网络爬虫教程,网络,代码,数据,爬虫,体系,设计,网站,时间,培训,智能,Py

    pycharm无法输入代码?

    pycharm无法输入代码?,代码,环境,工具,分析,输入法,键盘,性能,计算机,问题,