Python公开课 - Requests基本功能

前言

Python自带的库也可以进行网络访问,但是有很多不方便的地方,相比而言requests在这个方面非常强大,有了它,Cookies、登录验证、代理设置等操作都不是事儿。

发送请求

见示例:

>>> import requests
>>> r = requests.get('http://www.xtuz.net/')
>>> r = requests.post('http://www.xtuz.net/', data = {'key':'value'})
>>> r = requests.put('http://www.xtuz.net/', data = {'key':'value'})
>>> r = requests.delete('http://www.xtuz.net/')
>>> r = requests.head('http://www.xtuz.net/')
>>> r = requests.options('http://www.xtuz.net/')

可见,http的请求,requests已经做了非常友好的封装。

GET请求传递URL参数

在GET请求中,可以通过URL的查询字符串(query string)来传递数据。如果是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。如果你想传递 key1=value1 和 key2=value2 到 http://www.xtuz.net ,那么在requests中可以使用如下代码

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get("http://www.xtuz.net", params=payload)

自定义请求头

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

>>> url = 'http://www.xtuz.net'
>>> headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get(url, headers=headers)

响应状态码

我们可以通过返回的status_code来获取服务端的响应状态码

>>> r = requests.get('http://www.xtuz.net')
>>> r.status_code
200

响应头

我们可以查看以一个 Python 字典形式展示的服务器响应头:

>>> r.headers
{
    'content-encoding': 'gzip',
    'transfer-encoding': 'chunked',
    'connection': 'close',
    'server': 'nginx/1.0.4',
    'x-runtime': '148ms',
    'etag': '"e1ca502697e5c9317743dc078f67693f"',
    'content-type': 'application/json'
}

服务端响应文本内容

Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。

请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests 会使用其推测的文本编码。但是你也可以使用 r.encoding 属性来改变它。

>>> import requests
>>> r = requests.get('http://www.xtuz.net')
>>> r.text
>>> r.encoding

输出:
'utf-8'

服务端响应二进制内容

对于服务端返回二进制内容,可以使用下面的方式来获取数据

>>> r.content

requests 会自动为你解码 gzip 和 deflate 传输编码的响应数据。

服务端响应JSON内容

requests 中内置了JSON解码器,助你处理JSON数据

>>> import requests
>>> r = requests.get('http://www.xtuz.net')
>>> r.json()

服务端原始响应内容

在某些情况下,可能需要处理原始的数据,当然在爬虫中可不常见,但是如果你有这样的需求,那么可以这样处理

>>> r = requests.get('http://www.xtuz.net', stream=True)
>>> r.raw

相关阅读


相关推荐
  1. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  2. 机器学习 - 监督学习概述
  3. 技术破解钉钉打卡考勤 - 苹果手机专用完整解决方案
  4. 欧阳修智救狄青
  5. 宝宝几个月可以睡枕头 - 育儿经验
  6. 给网站加上永久免费SSL的证书
  7. 石家庄市元氏县新星幼儿园 - 石家庄幼儿园黄页
  8. 一封插有九根鸡毛的信
  9. ImageMagick给图像去噪
  10. 车企数字化转型(下)
  11. 月亮草
  12. 重庆市九龙坡区白市驿镇幼儿园 - 重庆幼儿园黄页
  13. 树结钟
  14. 成都市金牛区市级机关第二幼儿园 - 成都市幼儿园黄页
  15. 沈阳市苏家屯区永乐街道中心幼儿园 - 沈阳幼儿园黄页
  16. 湖北将发放消费券 - 武汉新鲜事
  17. 贵阳市南明区博雅第一幼儿园 - 贵阳市幼儿园黄页
  18. 贵州省贵阳市云岩区莱见湾艺术智能幼儿园 - 贵阳市幼儿园黄页
  19. 钻进画里的女孩
  20. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  21. 两个朋友分金子
  22. 万事俱备只欠东风
  23. 巧克力马路
  24. 白兔奔月
  25. 沧州市任丘市梧桐树幼儿园 - 沧州幼儿园黄页
  26. 脱单!武汉的相亲角在哪你知道吗?
  27. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  28. 武汉推出越王勾践剑交通卡
  29. 武汉动物园火烈鸟孔雀排队打疫苗
  30. Python+Selenium基本操作获取当前页面URL
  31. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  32. 长春市南关区东四小学双语实验幼儿园 - 长春幼儿园黄页
  33. 百名网媒总编辑登上知音号欣赏武汉夜色
  34. 深圳市罗湖区莲塘街道西岭社区东方格林兰亭国际幼儿园 - 深圳幼儿园黄页
  35. Python源码剖析 - Python中的字符串对象
  36. 武汉一女子七天被骗220万
  37. Python之机器学习入门
  38. 穷汉的木碗
  39. 股票列表
  40. Python的起源 - 二十年前的故事