安装requests库:pip install requests
#get post put delete head options 请求方法
'''
r = requests.get('http://httpbin.org/get')
r = requests.post('http://httpbin.org/post')
r = requests.delete('http://httpbin.org/delete')
print(r.text)
'''
#get方法传值
'''
payload = {'key1':"value1",'key2':'value2','key3':['value3','value4']}
r = requests.get("http://httpbin.org/get",params=payload)
print(r.url)
'''
#响应内容
'''
r = requests.get('https://www.baidu.com')
#r.encoding = 'utf-8' #改变编码方式
#print(r.text)
#print(r.encoding) #文本编码方式
#print(r.content) #二进制响应内容
#print(r.raw) #原始响应内容
#print(r.json) #json响应内容
'''
#定制请求头
'''
url = 'https://httpbin.org/get'
headers = {'user-agent':'spider'}
r = requests.get(url,headers=headers)
print(r.text)
'''
#复杂的post请求
'''
#payload = {'key1':'value1','key1':'value2'} #传入表单
payload = (('key1','value1'),('key1','value2')) #传入元组
r = requests.post("http://httpbin.org/post",data=payload)
print(r.text)
'''
#POST一个多部分编码(Multipart-Encoded)的文件
'''
url = 'https://httpbin.org/post'
files = {'test':open('t.txt','rb')}
r = requests.post(url,files=files)
print(r.text)
'''
#响应状态码
'''
r = requests.get('http://httpbin.org/get')
#r = requests.get('http://httpbin.org/got')
print(r.status_code) #输出状态码
print(r.status_code == requests.codes.ok)
print(r.raise_for_status()) #抛出 4xx 5xx 的异常 200返回None
'''
#响应头
'''
r = requests.get('http://httpbin.org/get')
print(r.headers)
print(r.headers['server'])
'''
#cookie
'''
cookies = dict(cookies_are='working')
r = requests.get('http://httpbin.org/cookies',cookies=cookies)
print(r.text)
'''
#重定向与请求历史
'''
url = 'http://github.com'
#r = requests.get(url)
#print(r.url)
#r = requests.get(url,allow_redirects=False)#GET、OPTIONS、POST、PUT、PATCH 或者 DELETE,那么你可以通过 allow_redirects 参数禁用重定向处理:
#print(r.status_code)
#print(r.history)
r = requests.head(url,allow_redirects=True)
print(r.status_code)
print(r.history)
'''
#超时
'''
url = 'http://github.com'
r = requests.get(url,timeout=0.1)
print(r.status_code)
#timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)If no timeout is specified explicitly, requests do not time out.
'''
#错误与异常
'''
遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常。
如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。
若请求超时,则抛出一个 Timeout 异常。
若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。
所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException
'''