python urllib2: connection reset by peer

J'ai un programme en perl qui récupère des données à partir de la base de données de mes bibliothèque de l'université et il fonctionne bien. Maintenant, j'ai envie de le réécrire en python, mais le problème
<urlopen error [errno 104] connection reset by peer>

Le code perl est:

    my $ua = LWP::UserAgent->new;
    $ua->cookie_jar( HTTP::Cookies->new() );
    $ua->timeout(30);
    $ua->env_proxy;
    my $response = $ua->get($url); 

Le code python que j'ai écrit est:

    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); 

Je utiliser un VPN(réseau privé virtuel) pour ouvrir une session dans mon la bibliothèque de l'université à la maison, et j'ai essayé les deux, le code perl et python code. Le code perl fonctionne comme je m'y attendais, mais le code python toujours rencontré "urlopen erreur".

J'ai googlé pour le problème et il semble que la urllib2 ne parvient pas à charger l'environnement de proxy. Mais selon le document de urllib2, le urlopen() fonctionne de manière transparente avec les procurations qui ne nécessitent pas d'authentification. Maintenant, je sent assez déroutant. Quelqu'un peut-il m'aider avec ce problème?

Sauter les points-virgules dans Python. Ils ne feront pas de tort, mais ils sont en mauvaise forme. Aussi, vous ne sera pas réellement obtenir toutes les données jusqu'à ce que vous ne urllib.urlopen(request).read()

OriginalL'auteur hanqiang | 2011-05-28