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. 10天宝宝不消化怎么办 - 育儿经验
  2. 老死不相往来
  3. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  4. 小兔子找伙伴
  5. 武汉一女子七天被骗220万
  6. 湘潭市第四中学
  7. 天津市河西区社区托儿所 - 天津幼儿园黄页
  8. 贵州省遵义市遵义县福星幼儿园 - 遵义市幼儿园黄页
  9. 珠江市斗门镇初级中学
  10. 重庆市巴南区爱心幼儿园 - 重庆幼儿园黄页
  11. Python公开课 - 爬虫识别图像验证码
  12. 厦门市民立小学
  13. 衡阳市长湖小学
  14. 莱州市夏邱镇中心小学
  15. 十堰市车城高中(原东风六中)
  16. 武汉00后大二学妹拍视频月入七十万
  17. 重庆市江北区娃呵呵南桥幼儿园 - 重庆幼儿园黄页
  18. 荣成34中学区黄山完小
  19. 平度市艺术中学
  20. Python公开课 - 爬虫识别滑动验证码
  21. 汕头市金涛小学
  22. 青蛙先生看报
  23. 枣庄市台儿庄区邳庄镇旗杆小学
  24. 江西婺源天佑中学
  25. 武汉推出越王勾践剑交通卡
  26. Python公开课 - 详解函数
  27. 印度视频应用Vmate获得阿里一亿风投
  28. 脱单!武汉的相亲角在哪你知道吗?
  29. 车联网 - 电子围栏概述
  30. 一文讲清SD-WAN
  31. 杭州师范大学东城小学
  32. 会飞的鞋子
  33. 收藏阳光的小熊
  34. 豆豆龙过生日
  35. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  36. 沧州市任丘市中天幼儿园 - 沧州幼儿园黄页
  37. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  38. 深圳市福田区梅华小学
  39. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  40. 常州市武进区寨桥初级中学
  41. “珍贵”的苍蝇
  42. 四川师范大学附属小学(川师附小)
  43. 临汾市霍州市大张艺术幼儿园 - 临汾幼儿园黄页
  44. Linux运维常用命令
  45. 河北省唐山市乐亭县福乐幼儿园 - 唐山幼儿园黄页
  46. 武汉女子网上做兼职被骗六十五万
  47. 机器学习 - 监督学习概述
  48. 柳州市柳北区芭芭乐幼儿园 - 柳州市幼儿园黄页
  49. 广州华美英语实验学校
  50. Python公开课 - 基础数据类型
  51. 差一点
  52. 山东省潍坊第四中学
  53. Python+Selenium基本操作获取当前页面URL
  54. 成都市晋阳小学
  55. 沈阳市雨田实验中学
  56. 獒精
  57. 圣诞节的起源
  58. 湖北将发放消费券 - 武汉新鲜事
  59. 上海市长宁区育苗幼儿园附设托儿所 - 上海幼儿园黄页
  60. 南宁市第四十三中学