扫码关注官方订阅号
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
谢天谢地我刚刚找到了解决方案
用python爬虫抓站的一些技巧总结 - Python - 伯乐在线http://python.jobbole.com/81997/ 原文在这里
def request(url, cookie='xxx', retries=5): ret = urlparse.urlparse(url) # Parse input URL if ret.scheme == 'http': conn = httplib.HTTPConnection(ret.netloc) elif ret.scheme == 'https': conn = httplib.HTTPSConnection(ret.netloc) url = ret.path if ret.query: url += '?' + ret.query if ret.fragment: url += '#' + ret.fragment if not url: url = '/' try: conn.request(method='GET', url=url, headers={'Cookie': cookie}) res = conn.getresponse() except Exception, e: print e.message if retries > 0: return request(url=url, retries= retries - 1) else: print 'GET Failed' return '' else: pass finally: pass if res.status != 200: return None return res.read()
原理是用一个retries变量存储重试次数,然后每次异常处理的时候就递归本身并且将重试次数-1,判断如果重试次数小于0就直接return并且打出失败日志
递归调用自身进行retrycount来限制是一种最直接的方法。但是有个问题: 如果对方地址只是暂时失败,比如重启服务了。立马重试还是失败,重试5次的时间很短,当对方服务好了之后这个请求就已经过掉了,因为重试了5次
我用的机制是 重试五次,分别等待30s 1分钟 10分钟 30分钟 1个小时 如果还是失败就认为确实失败了。当然 这个用法是根据具体业务逻辑来做处理。不同的业务需求,对请求的要求也是不一样的。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
谢天谢地我刚刚找到了解决方案
用python爬虫抓站的一些技巧总结 - Python - 伯乐在线http://python.jobbole.com/81997/ 原文在这里
原理是用一个retries变量存储重试次数,然后每次异常处理的时候就递归本身并且将重试次数-1,判断如果重试次数小于0就直接return并且打出失败日志
递归调用自身进行retrycount来限制是一种最直接的方法。
但是有个问题:
如果对方地址只是暂时失败,比如重启服务了。立马重试还是失败,重试5次的时间很短,当对方服务好了之后这个请求就已经过掉了,因为重试了5次
我用的机制是 重试五次,分别等待30s 1分钟 10分钟 30分钟 1个小时 如果还是失败就认为确实失败了。
当然 这个用法是根据具体业务逻辑来做处理。不同的业务需求,对请求的要求也是不一样的。