import requests
# 一,普通的请求方式
# response = requests.get('http://github.com')
# print response.status_code #requests请求的状态码
# print response.url #requests请求的url
# # print response.text #服务器响应的内容
# print response.cookies #服务器响应cookie
# print response.headers #服务器响应头
# print response.encoding #编码方式,如果源码没有指定编码方式,requests默认ISO-8859-1,你可以设置response.encoding = 'utf-8'改变编码方式。
# print response.raw #获取来自服务器的原始套接字响应,请求中设置stream=True
# print response.history # history 方法来追踪重定向,是重定向列表,为了完成请求而创建了这些对象。# 这个对象列表按照从最老到最近的请求进行排序。你可以设置allow_redirects=False禁用请求的重定向功能。
# 二,定制请求头headers,传递给requests的headers参数。
# headers = {
# "":"",
# "":""
# }
# response = requests.get(url,headers=headers)
# 官方文档描述:
# 注意: 定制 header 的优先级低于某些特定的信息源,例如:
# 如果在 .netrc 中设置了用户认证信息,使用 headers= 设置的授权就不会生效。而如果设置了 auth= 参数, .netrc 的设置就无效了。
# 如果被重定向到别的主机,授权 header 就会被删除。
# 代理授权 header 会被 URL 中提供的代理身份覆盖掉。
# 在我们能判断内容长度的情况下,header 的 Content-Length 会被改写。
# 三,发送带参数的POST请求,把参数以字典的形式传递给data参数。
# 如果要求传递的参数是json对象格式:
# 1、可以直接传递给json参数,json参数会自动把payload转换成json对象。
# 2、也可以用json.dumps(payload)转换后再传递给data参数。
# payload = {'key1': 'value1', 'key2': 'value2'}
# 不要求参数是json格式
# response = requests.post('https://api.github.com/some/endpoint',data=payload)
# print response.text
# print response.headers['Status'] #读取服务器响应头的Status信息
#要求参数是json格式。
# response = requests.post('https://api.github.com/some/endpoint',json=payload)
# 或:
# response = requests.post('https://api.github.com/some/endpoint',data=json.dumps(payload))
# 四,带cookies的请求,你需要把cookie传递给requests的cookies参数。
# cookie = {
# "":"",
# "":""
# }
# response = requests.get(url,cookies=cookie)
# print response.status_code
# 五,链接超时,你可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。基本上所有的生产代码都应该使用这一参数。如果不使用,你的程序可能会永远失去响应。
# response = requests.get('http://www.baidu.com', timeout=0.01)
# print response.status_code
# 超时会触发Timeout 异常。
# timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常。
# (更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)
# 六,读取超时,读取超时指的就是客户端等待服务器回应请求的时间。
# 官方解读:一旦你的客户端连接到了服务器并且发送了 HTTP 请求,读取超时指的就是客户端等待服务器发送请求的时间。
# (特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间)。
# r = requests.get('https://github.com', timeout=5) #指定了一个单一的值作为 timeout ,将会用作 连接 和 读取 二者的 timeout。如果要分别制定,就传入一个元组
# r = requests.get('https://github.com', timeout=(3.05, 27)) #分别设定连接超时的时间和读取服务器回应请求的时间,时间最好是3的倍数多一点。
# r = requests.get('https://github.com', timeout=None) #如果远端服务器很慢,你可以让 Request 永远等待,传入一个 None 作为 timeout 值,然后就冲咖啡去吧。会一直等待直到服务器完成响应。
注:原创文章,未经作者本人同意,禁止转载。
原文地址:http://www.jianshu.com/p/7445ab23ea0b