首页 / PYTHON / Python-Requests
Python-Requests
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python-Requests,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4540字,纯文字阅读大概需要7分钟。
内容图文
![Python-Requests](/upload/InfoBanner/zyjiaocheng/797/71b2195c431f489ab8011a3fade8609c.jpg)
目录
一、发送请求
import requests
r = requests.get('https://api.github.com/events')
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
二、URL传参
2.1:普通参数
url = 'http://httpbin.org/get'
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get(url=url, params=payload)
print(r.url)
# http://httpbin.org/get?key2=value2&key1=value1
2.2:一键多值
url = 'http://httpbin.org/get'
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get(url=url, params=payload)
print(r.url)
# http://httpbin.org/get?key1=value1&key2=value2&key2=value3
三、响应内容
3.1:unicode 字符
import requests
r = requests.get('https://api.github.com/events')
print(r.text) # 获取响应内容
print(r.encoding) # 'utf-8'
3.2:二进制响应内容,获取照片
import requests
url = 'https://b-ssl.duitang.com/uploads/item/201504/29/20150429075539_cy8vV.jpeg'
r = requests.get(url)
path = 'img/1.jpg'
with open(path, 'wb') as f:
"""写入一张照片"""
f.write(r.content)
3.3:JSON 响应内容
JSON 解码器
import requests
r = requests.get('https://api.github.com/events')
print(r.json())
print(r.text)
3.4:响应状态码
r = requests.get('http://httpbin.org/get')
print(r.status_code) #200
print(r.status_code == requests.codes.ok) # True
3.5:响应头
r = requests.get('http://httpbin.org/get')
print(r.headers)
print(r.headers['Content-Type'])
四、定制请求
4.1:定制请求头
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
4.2:POST 请求
url = "http://httpbin.org/post"
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=payload)
print(r.text)
4.3:一参多值POST
你还可以为 data 参数传入一个元组列表。在表单中多个元素使用同一 key 的时候,这种方式尤其有效:
url = "http://httpbin.org/post"
payload = (('key1', 'value1'), ('key1', 'value2'))
r = requests.post(url, data=payload)
print(r.text)
4.4:str 转字典发送
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
r = requests.post(url, json=payload)
print(r.text)
五、上传文件
5.1:上传一个xls
url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
print(r.text)
5.2:显式地设置文件名,文件类型和请求头
url = 'http://httpbin.org/post'
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r = requests.post(url, files=files)
print(r.text)
5.3:发送作为文件来接收的字符串
url = 'http://httpbin.org/post'
files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
r = requests.post(url, files=files)
print(r.text)
六、Cookie
6.1:访问Cookie
url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)
data = r.cookies['example_cookie_name']
print(data)
print(r.cookies['example_cookie_name'])
6.2:发送cookies到服务器
url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
print(r.text)
6.3:传Cookie Jar到Requests 中
Cookie 的返回对象为 RequestsCookieJar,它的行为和字典类似,但接口更为完整,适合跨域名跨路径使用。你还可以把 Cookie Jar 传到 Requests 中:
jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)
print(r.text)
七、超时
r = requests.get('https://github.com', timeout=2)
print(r.text)
八、重定向与请求历史
Github 将所有的 HTTP 请求重定向到 HTTPS:
r = requests.get('http://github.com')
print(r.url)
print(r.status_code)
print(r.history)
九、错误与异常
- 遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常。
- 如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。
- 若请求超时,则抛出一个 Timeout 异常。
- 若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。
- 所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException 。
参考:Requests快速上手
内容总结
以上是互联网集市为您收集整理的Python-Requests全部内容,希望文章能够帮你解决Python-Requests所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。