84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
拥有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个小时 如果还是失败就认为确实失败了。当然 这个用法是根据具体业务逻辑来做处理。不同的业务需求,对请求的要求也是不一样的。
谢天谢地我刚刚找到了解决方案
用python爬虫抓站的一些技巧总结 - Python - 伯乐在线http://python.jobbole.com/81997/ 原文在这里
原理是用一个retries变量存储重试次数,然后每次异常处理的时候就递归本身并且将重试次数-1,判断如果重试次数小于0就直接return并且打出失败日志
递归调用自身进行retrycount来限制是一种最直接的方法。
但是有个问题:
如果对方地址只是暂时失败,比如重启服务了。立马重试还是失败,重试5次的时间很短,当对方服务好了之后这个请求就已经过掉了,因为重试了5次
我用的机制是 重试五次,分别等待30s 1分钟 10分钟 30分钟 1个小时 如果还是失败就认为确实失败了。
当然 这个用法是根据具体业务逻辑来做处理。不同的业务需求,对请求的要求也是不一样的。