说明
封装requests请求函数,包括异常处理及超时超次设置。
代码
# -*- coding: utf-8 -*-
'''
@Time : 2020/10/21 10:35
@Author : Songyou Han
@File : UrlRequestsFunctions.py
@Description : url请求及数据提取函数
@Software: PyCharm
'''
import requests
import time
import json
class GetRequestsFunctions:
# 初始化请求函数库
def __init__(self):
print("调用查询函数类:GetRequestsFunctions...")
# get请求函数:拼接单个字符串
def getRequestsWithString(self,baseurl:str,value:str = ''):
'''【获取请求数据/拼接字符】參數:baseurl基本url,value拼接值;返回:response请求响应体'''
url = baseurl +"/"+ value
while True:
try:
response = self.getRequests(url = url).json()
break
except Exception as e:
print('请求失败——10s后重试——异常:', e)
time.sleep(10) #10s后重試
return response
# get请求函数:拼接字段名称&字段值
def getRequestsWithParams(self,baseurl:str,paramsDict:dict):
'''【获取请求数据/参数列表】參數:baseurl基本url,paramsDict拼接值字典;返回:response请求响应体'''
while True:
try:
response = self.getRequests(url=baseurl, params=paramsDict).json()
break
except Exception as e:
print('请求失败——10s后重试——异常:', e)
time.sleep(10) #10s后重試
return response
# get请求函数基本函数
def getRequests(self,url:str,params:dict = {},limitTimes:int = 10):
'''【获取请求数据】参数:url,limitTimes请求次数限制;输出:response请求响应体'''
count = 0 # 計數器
while count < limitTimes:
count += 1
try:
if not params:#无params参数则直接请求数据
response = requests.get(url,timeout=5)
else:#有params参数则带参请求数据
response = requests.get(url=url,params=params)
break
except Exception as e:
print('请求失败——10s后重试——异常:', e)
time.sleep(10) #10s后重試
# 输出结果
if count <= limitTimes:return response
else:print("嘗試{limitTimes}次請求失敗...".format(limitTimes = limitTimes));return False