【发布时间】:2011-05-28 18:48:58
【问题描述】:
我有一个 perl 程序,可以从我的大学图书馆的数据库中检索数据,它运行良好。现在我想用python重写但遇到问题
<urlopen error [errno 104] connection reset by peer>
perl代码是:
my $ua = LWP::UserAgent->new;
$ua->cookie_jar( HTTP::Cookies->new() );
$ua->timeout(30);
$ua->env_proxy;
my $response = $ua->get($url);
我写的python代码是:
cj = CookieJar();
request = urllib2.Request(url); # url: target web page
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
opener = urllib2.install_opener(opener);
data = urllib2.urlopen(request);
我在家使用VPN(虚拟专用网络)登录我大学的图书馆,我尝试了perl代码和python代码。 perl 代码按我的预期工作,但 python 代码总是遇到“urlopen 错误”。
我搜索了这个问题,似乎 urllib2 无法加载环境代理。但是根据 urllib2 的文档,urlopen() 函数可以透明地与不需要身份验证的代理一起工作。现在我感觉很混乱。有人可以帮我解决这个问题吗?
【问题讨论】:
-
在 Python 中跳过分号。他们不会受伤,但他们是糟糕的形式。此外,在您执行
urllib.urlopen(request).read()之前,您实际上不会获得任何数据