编辑: 经过多次摆弄,似乎 urlgrabber 在 urllib2 失败的地方成功了,即使在每个文件之后告诉它关闭连接也是如此。似乎 urllib2 处理代理的方式或我使用它的方式可能有问题!无论如何,这是在循环中检索文件的最简单的代码:
import urlgrabber
for i in range(1, 100):
url = "http://www.iana.org/domains/example/"
urlgrabber.urlgrab(url, proxies={'http':'http://<user>:<password>@<proxy url>:<proxy port>'}, keepalive=1, close_connection=1, throttle=0)
大家好 !
我正在尝试编写一个非常简单的 python 脚本来通过 urllib2 获取一堆文件。
该脚本需要通过代理工作(如果在内部网上抓取文件,即没有代理,我的问题不存在)。
在几次请求“HTTPError:HTTP Error 401:basic auth failed”后,所述脚本失败。知道为什么会这样吗?似乎代理拒绝了我的身份验证,但为什么呢?前几个 urlopen 请求正确通过!
编辑:在请求之间添加 10 秒的睡眠以避免代理可能执行的某种限制不会改变结果。
这是我的脚本的简化版本(显然,已删除了已识别的信息):
import urllib2
passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
passmgr.add_password(None, '<proxy url>:<proxy port>', '<my user name>', '<my password>')
authinfo = urllib2.ProxyBasicAuthHandler(passmgr)
proxy_support = urllib2.ProxyHandler({"http" : "<proxy http address>"})
opener = urllib2.build_opener(authinfo, proxy_support)
urllib2.install_opener(opener)
for i in range(100):
with open("e:/tmp/images/tst{}.htm".format(i), "w") as outfile:
f = urllib2.urlopen("http://www.iana.org/domains/example/")
outfile.write(f.read())
提前致谢 !