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?
urllib.urlopen(request).read()
OriginalL'auteur hanqiang | 2011-05-28
Vous devez vous connecter pour publier un commentaire.
J'ai essayé de truquer le User-Agent en-têtes comme Uku Loskit et Mikko Ohtamaa suggéré, et a résolu mon problème. Le code est comme suit:
Espère que c'est utile pour quelqu'un d'autre!
OriginalL'auteur hanqiang
Tout d'abord, que Steve a dit, vous avez besoin de réponse.read(), mais ce n'est pas votre problème
Pouvez-vous donner des détails de l'erreur? Vous pouvez l'obtenir comme ceci:
Source: http://www.voidspace.org.uk/python/articles/urllib2.shtml
(J'ai mis ça dans un commentaire mais il a mangé mes retours à la ligne)
OriginalL'auteur bcoughlan
Vous trouverez peut-être que le les demandes module est beaucoup plus facile à utiliser de remplacement pour urllib2.
OriginalL'auteur Michael Kent
Avez-vous essayez de spécifier manuellement le proxy?
si cela échoue, essayez de simuler votre User-Agent en-têtes, de manière à faire croire que la demande vient d'un vrai navigateur.
OriginalL'auteur Uku Loskit