Python爬虫requests判断请求超时并重新post/get发送请求
Python爬虫requests判断请求超时并重新post/get发送请求
在使用Python爬虫中,你可以使用requests
库来发送网络请求。为了判断请求超时并重新发送请求,你可以设置一个超时时间,并在请求超时时捕获异常重新发送请求。
import requests #Python爬虫requests判断请求超时并重新post发送请求,proxies为代理 def send_request_post(url, data, headers , proxies , max_retries=3, timeout=5): retries = 0 while retries < max_retries: try: # 去掉警告 requests.packages.urllib3.disable_warnings() response = requests.post(url=url, json=data, headers=headers , verify=False, proxies=proxies,timeout=timeout) if response.status_code == 200: # 请求成功,返回响应 return response except requests.exceptions.Timeout: print(f"POST请求超时,正在进行第 {retries + 1} 次重试...") except requests.exceptions.RequestException as e: print(f"请求发生异常:{e}") retries += 1 print("请求失败,达到最大重试次数。") return None #Python爬虫requests判断请求超时并重新get发送请求, def send_request_get(url, max_retries=3, timeout=5): retries = 0 while retries < max_retries: try: response = requests.get(url, timeout=timeout) if response.status_code == 200: # 请求成功,返回响应 return response except requests.exceptions.Timeout: print(f"GET请求超时,正在进行第 {retries + 1} 次重试...") except requests.exceptions.RequestException as e: print(f"请求发生异常:{e}") retries += 1 print("请求失败,达到最大重试次数。") return None
#示例:get获取代理ip def get_ip(): response = send_request_get('http:/xxxxxxxxxxxxxx/tip') if response: data = json.loads(response.text) proxies = { "http": "http://%(proxy)s" % {"proxy": data["ip"]}, "https": "http://%(proxy)s" % {"proxy": data["ip"]} } return proxies #示例post send_request_post(url, data, headers, proxies)
在上面的示例中,send_request_get函数接受一个URL作为参数,并可选地指定最大重试次数和超时时间。函数使用requests.get
发送GET请求,并设置了超时时间为5秒。如果请求超时,会捕获requests.exceptions.Timeout
异常,并输出重试信息。如果发生其他异常,会捕获requests.exceptions.RequestException
并输出相关信息。
你可以调整max_retries
和timeout
的值来适应需求。