擅长:python、mysql、java
<p>我经常遇到这样的问题。我通常实现我的API请求包装器或浏览器“get”,如下所示:</p>
<pre><code>def get_remote( url , attempt=0 ):
try :
request = urllib2.Request(format_url)
urlobject = urllib2.urlopen(request)
...
return data
except urllib2.HTTPError , error:
if error.code in ( 403 , 404 ):
if attempt < MAX_ATTEMPTS :
return get_remote( url , attempt=attempt+1 )
raise
</code></pre>
<p>基于url或尝试,我还将更改请求参数。例如,某些网站会阻止Python识别的浏览器,因此如果它们匹配regex,我将用用户代理替换Firefox。或者:如果第一次尝试失败,我可能总是在第二次请求时尝试Firefox/Safari,或者在随后的两次尝试之间实现随机超时。</p>