尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python代理池

Python代理池 有效IP# 获取代理IP def getProxyIPs(): url https://proxy/get_ip.php response requests.get(url, paramsparams) data response.json() # print(data) listIPs [] for val in data[data][proxies]: url https:// str(val) try: response requests.get(https://web.com/api, verifyFalse, timeout15, allow_redirectsTrue, proxies{https: url}) listIPs.append(url) except: continue return listIPsIP池def genIPPool(maxCount): unique_list [] while True: # 重新拉取新的 try: my_list getProxyIPs() [unique_list .append(item) for item in my_list if item not in unique_list ] except: continue if len(ipHttpsProxys) maxCount: return unique_list均衡更新ipHttpsProxys [] def reqUrl(url): failRemove False #请求失败是否从代理池移除触发ip池更新 if 0 len(ipHttpsProxys): ipHttpsProxys genIPPool(10) proxyUrl ipHttpsProxys[0] proxies { https: proxyUrl } del ipHttpsProxys[0] if not failRemove: ipHttpsProxys.append(proxyUrl) ssl._create_default_https_context ssl._create_unverified_context json_response requests.get(url, proxiesproxies).json() if failRemove: ipHttpsProxys.append(proxyUrl)拥塞调控def getDatas(url, retryMaxCount): sleepTime 0.5 for id in range(1, 100): retryCount 0 while (retryCount retryMaxCount): time.sleep(sleepTime) try: reqUrl(url f?id{id}) sleepTime / 2 if sleepTime 0.5: sleepTime 0.5 break except Exception as e: sleepTime * 2 if(sleepTime 60): sleepTime 60 retryCount 1 if retryCount retryMaxCount: print(f{id} fail!) continue创作不易小小的支持一下吧
返回列表