版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38736612/article/details/81414070
前言
Urllib和requests库都是python3中发送请求的库,但是比较而言,Requests库更加强大和易用,所以学习python3就不要学习urllib了,2020年python2的库就不再更新,所以我们学习python3更有意义!
实例引入
import requests
response = requests.get('http://www.baidu.com')
print(type(response))
print(response.status_code)
print(type(response.text))
print(response.text)
print(response.cookies)
各种请求方式
import requests
requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')
请求
基本的GET请求
基本写法
import requests
response = requests.get('http://httpbin.org/get')
print(response)
带参数的GET请求
# 第一种
import requests
response = requests.get('http://httpbin.org/get?name=will&age=20')
print(response.text)
# 第二种
import requests
data = {
'name':'will',
'age':20
}
response = requests.get('http://httpbin.org/get',params=data)
print(response.text)
解析Json
import requests
response = requests.get('http://httpbin.org/get')
print(type(response.text))
print(response.json())
print(type(response.json()))
获取二进制数据
import requests
# url
response = requests.get('http://httpbin.org/favicon.icon')
print(type(response.text),type(response.content))
print(response.text)
print(response.content)
import requests
response = requests.get('http://httpbin.org/favicon.icon')
with open('favicon.icon','wb') as f:
f.write(response.content)
f.close()
添加headers
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'}
response = requests.get('http://httpbin.org/explore',headers=headers)
print(response.text)
基本POST请求
import requests
data ={'name':'will','age':'20'}
response = requests.post('http://httpbin.org/post',data=data)
print(response.text)
import requests
data ={'name':'will','age':'20'}
hearders = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'
}
response = requests.post('http://httpbin.org/post',data=data,headers=headers)
print(response.json())
响应
response属性
import requests
response = requests.get('http://www.jianshu.com')
print(type(response.status_code),response.status_code)
print(type(response.headers),response.headers)
print(type(response.cookies),response.cookies)
print(type(response.url),response.url)
print(type(response.history),response.history)
状态码判断
import requests
response = requests.get('http://www.jianshu.com')
if response.status_code == 200:
print('Request Successfully!')
exit()
状态码:(链接:http://tools.jb51.net/table/http_status_code)
高级操作
文件上传
import requests
files = {'file':open('favicon.ico','rb')}
response = requests.post('http;//httpbin/post',files=files)
print(response.text)
获取cookie
import requests
response = requests.get('http://wwwbaidu.com')
print(response.cookies)
for key, value in response.cookies.items():
print(key+ '='+ value )
会话维持
import requests
requests.get('http://httpbin.org/cookies/set/number/123456789')
respoonse = requests.get('http://httpbin.org/cookies')
print(response.text)
上下对比(要用Session哦)
import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
response = s.get('http://httpbin.org/cookies')
print(response.text)
证书验证
import requests
response = requests.get('https://www.12306.cn')
print(response.status_code)
import requests
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
代理设置
import requests
proxies = {
"http":"http://127.0.0.1:9743",
"https":"https://127.0.0.1:9743",
}
response = requests.get('http://www.baidu.com',proxies=proxies)
print(response.status_code)
超时设置
import requests
response = requests.get('http://httpbin.org/get',timeout=0.1)
print(response.status_code)
认证设置
import requests
from requests.auth import HTTPBasicAuth
r =requests.get('http;//120.27.34.24:9001'.auth=HTTPBasicAuth('user','123'))
print(r.status_code)
import requests
r =requests.get('http;//120.27.34.24:9001'.auth=('user','123'))
print(r.status_code)
异常处理
import requests
from requests.exceptions import ReadTimeout,HTTPError,RequestException
try:
response = requests.get('http;//httpbin.org/get',timeout=0.5)
print(response.status_code)
except ReadTimeout:
print('TimeOut')
except HTTPError:
print('Http error')
except RequestException:
print('error')