程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python requests模块(PYTHON REQUESTS模块下载)

hfteth 2025-01-26 22:29:25 技术文章 16 ℃

requests模块在python内置模块urllib2的基础上进行了二次高度的封装,使得python进行网络请求时,变得更加简洁和人性化,非常方便。

requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。

requests是第三方模块,使用之前需要安装:

pip install requests


支持请求方式:GET,POST,PUT,DELETE,HEAD,OPTIONS

最常用的方式就是get和post,我们可以定义一个方法实现简单的API请求:
import requests
import json
# 执行WEB API,适合参数多且无需先登录的单个API
# method:API的调用方法,支持 get 和 post 方法
# url:入参,API地址
# params:url中的参数及值,如 params = {'key1': 'value1', 'key2': 'value2', 'key3': value3}
# 返回值:返回API的执行结果值
def web_api_withMethod(method, url, params):
headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5","Accept": "text/plain", 'Connection': 'close'}
if method == 'get':
try:
r = requests.get(url, params=params, headers=headers, timeout=120)
except requests.ReadTimeout, requests.ConnectTimeout:
r = 'Timeout'
elif method == 'post':
r = requests.post(url, data=params, headers=headers, timeout=120)
else:
r = {'error': '不被接受的方法,只支持get或post'}
try:
is_json = json.loads(r.text)
except(TypeError, ValueError):
is_json = False
if is_json:
return json.loads(r.text)
else:
return r.text.encode('utf-8')
# web_api_withMethod 调用实例
api_url="http://xxxxxx/webapi/API_QueryUserInfo"
params = {
'loginAccount': 'test1',
'loginPassword': 'test1'
}
r = web_api_withMethod("get",api_url,params) #采用get方法
r = web_api_withMethod("post",api_url,params) #采用post方法


以上是单个接口调用,如果我们想要调用的接口,但这个接口不能直接调用,需要先登录,才能调用,可以用session来保存状态。实现如下:

# 执行WEB API,如果API要求先登录,则传入login_url参数即可
# login_url:用于登录的API,完整的URL
# api_url:用于测试的API地址,包括参数的完整URL
# 返回值:返回API的执行结果值
def web_api_withLogin(login_url='',api_url=''):
headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5",
"Accept": "text/plain",'Connection': 'close'}
v = requests.Session()
r = {'data':'error'}
if login_url != '':
v.get(login_url, headers=headers)
if api_url != '':
r = v.get(api_url, headers=headers)
return json.loads(r.text)

#调用
api_login = "http://xxx/webapi/xx/xx?loginAccount=xx&loginPassword=xx"
api_url2 = "http://xxx/webapi/xx/xxx?id=xxx"
r = web_api_withLogin (api_login,api_url2)

先写到这里,后续会再出一个如何用requests调用接口上传文件。

Tags:

最近发表
标签列表