Requests库学习

安装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

'''

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。