python 网络请求类库 requests 使用

requests是 为python封装的强大 REST 操作类库

  • github https://github.com/kennethreitz/requests
  • 官网 python-requests.org

1: 安装,请使用 pip,或是 easy_install 工具

sudo pip install requests

2: 使用 先

import requests

#coding=utf-8
#要加上编码设置,不然编译不通过,这是python2的问题'''
Created on 2014年4月22日@author: dev.keke@gmail.com
'''#测试 request库环境,python2.7环境import requests   #GET 请求
r = requests.get('http://httpbin.org/get')
print 'GET:',r.text#POST 请求
r = requests.post('http://httpbin.org/post')
print 'POST',r.text#GET 带参数请求,
pararms = {'key1':'value1','key2':'value2'}
r = requests.get('http://httpbin.org/get',params=pararms)
print 'GET Pararms',r.url,r.text#POST 带参数请求,
parar={'key1':'value1','key2':'value2'}
r = requests.post('http://httpbin.org/post',params = parar)
print 'POST Pararms:',r.url,r.text#改变响应数据的编码
r.encoding = 'ISO-8859-1'#取得响应的二进制数据
r.content#取得json数据,如果数据json处理失败,会抛出异常
r.json()#响应原始数据内容,注意设置 r = requests.get('https://github.com/timeline.json', stream=True) tream = True
r.raw #原数据内容

3:一些更为复杂的操作

定制请求头

>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}>>> r = requests.post(url, data=json.dumps(payload), headers=headers)

复杂的post请求

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
{..."form": {"key2": "value2","key1": "value1"},...
}

>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}>>> r = requests.post(url, data=json.dumps(payload))

上传文件

>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('report.xls', 'rb')}>>> r = requests.post(url, files=files)
>>> r.text
{..."files": {"file": "<censored...binary...data>"},...
}

>>> url = 'http://httpbin.org/post'
>>> files = {'file': ('report.xls', open('report.xls', 'rb'))}>>> r = requests.post(url, files=files)
>>> r.text
{..."files": {"file": "<censored...binary...data>"},...
}

>>> url = 'http://httpbin.org/post'
>>> files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}>>> r = requests.post(url, files=files)
>>> r.text
{..."files": {"file": "some,data,to,send\\nanother,row,to,send\\n"},...
}

响应状态码:

内置状态码:

>>> r.status_code == requests.codes.ok
True

根据状态码抛出异常

>>> bad_r = requests.get('http://httpbin.org/status/404')
>>> bad_r.status_code
404>>> bad_r.raise_for_status()
Traceback (most recent call last):File "requests/models.py", line 832, in raise_for_statusraise http_error
requests.exceptions.HTTPError: 404 Client Error

查看响应头

>>> r.headers
{'status': '200 OK','content-encoding': 'gzip','transfer-encoding': 'chunked','connection': 'close','server': 'nginx/1.0.4','x-runtime': '148ms','etag': '"e1ca502697e5c9317743dc078f67693f"','content-type': 'application/json; charset=utf-8'
}

设置请求超时时间

>>> requests.get('http://github.com', timeout=0.001)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)

参考:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html

python 网络请求类库 requests 使用相关推荐

  1. Python网络请求库Requests,妈妈再也不会担心我的网络请求了(二)

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 极客导航 即可关注,每个工作日都有文章更新. 一.概况 接着上篇说,如果你真以为Requests网络请求库只有Get请求和Post请求 ...

  2. Python网络请求库Requests,妈妈再也不会担心我的网络请求了(一)

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 极客导航 即可关注,每个工作日都有文章更新. 一.概况 网络请求可能是每门语言比较重要的一部分了,在Python语言中,虽然有urll ...

  3. python 网络请求

    python 网络请求相比Android 网络请求要简单 1,你可以定义一个自己的请求头,也可以不写. 如: http_headers = {'Accept': 'application/json', ...

  4. python request请求参数_使用python将请求的requests headers参数格式化方法

    如下所示: import json # 使用三引号将浏览器复制出来的requests headers参数赋值给一个变量 headers = """ Host: zhan. ...

  5. Python 深入浅出 - 网络请求库 Requests

    Requests 是用 Python 语言编写的,基于 urllib,采用 Apache2 Licensed 开元协议的 HTTP 库,它比 urllib 更加方便,编写爬虫和测试服务器响应数据时经常 ...

  6. python网络爬虫之requests模块

    什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效.在爬虫领域中占据着半壁江山的地位. 因为在使用ur ...

  7. Python网络请求、JSON转换、多线程、异步IO

    在 Python 众多的 HTTP 客户端中,最有名的莫过于 requests . aiohttp 和 httpx . 在不借助其他第三方库的情况下, requests 只能发送同步请求: aioht ...

  8. Python网络请求urllib和urllib3详解

    1. 简介 urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib. 而urllib3则是增加了连接池等功 ...

  9. 06.Python网络爬虫之requests模块(2)

    今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 知识点回顾 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 引入 ...

最新文章

  1. python可以在linux运行_在linux运行python
  2. 每日程序C语言25-查找100以内的素数
  3. 做po_requisitions_interface_all接口开发问题
  4. 不就是要个30K的薪资,他还问我Nginx调优
  5. python 数组维度_python – 非常基本的Numpy数组维度可视化
  6. 最经典的Linux入门命令
  7. LuckyFrame执行Web自动化用例
  8. JAVA并发编程实践-中文-高清-带书签-完整版
  9. 2019华为机试题 消息扩散
  10. 主站SOEM函数详解--SDO读写函数
  11. 常用iOS的第三方框架
  12. 收到垃圾广告短信,回复“T”退订,完全没用怎么办?
  13. 图书馆图书上架_泉城书房济南市平阴县图书馆锦东分馆图书上架了!
  14. 关于EMC DAE、DPE、SPE、SPS的解释
  15. ubuntu设置全攻略
  16. 7款开源ERP系统比较
  17. 河北大学本部导航系统(c语言实现)
  18. t-io 3.7.5 发布,口碑炸裂的国产网络编程框架
  19. Biorhythms(信息学奥赛一本通 1639)
  20. excel培训机构_中金中国企业跨境并购流程、重点问题和交易架构设计(内部培训)42页...

热门文章

  1. hive hsql 漏斗模型_数据分析之SQL:常用模型
  2. php页面自分页刷新,详解PHP+AJAX无刷新分页实现方法
  3. python什么时候开始流行的_Python什么时候会被取代?
  4. 自动档汽车正确的操作方法和习惯---请教贴
  5. Redhat Enterprise Linux 6 正式版已经发布!
  6. DeepMind深度学习高级课程,视频已全部放出
  7. 谷歌开源集成学习工具AdaNet:2017年提出的算法终于实现了
  8. 中国团队首次夺冠FPS游戏AI竞赛VizDoom,清华腾讯AI联手
  9. 纳什叫上林书豪,投了一家AI篮球训练公司
  10. Google被骂成筛子