J'ai un programme PERL qui récupère des données de la base de données de ma bibliothèque universitaire et cela fonctionne bien. Maintenant je veux le réécrire en python mais rencontrer le problème
Le code PERL est: P>
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);
4 Réponses :
Tout d'abord, comme Steve a dit, vous avez besoin de réponse.Read (), mais ce n'est pas votre problème pouvez-vous donner des détails sur l'erreur? Vous pouvez l'obtenir comme ceci: p> source: http://www.voidspace.org.uk/python/articles/urllib2.shtml p> (Je l'ai mis dans un commentaire mais il a mangé mes nouvelles lignes) p> p>
Avez-vous essayé de spécifier le proxy manuellement?
proxy = urllib2.ProxyHandler({'http': 'your_proxy_ip'}) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) urllib2.urlopen('http://www.uni-database.com')
Faire semblant des en-têtes d'agent utilisateur résolvez mon problème. Merci beaucoup!
J'ai essayé de simuler les en-têtes d'agent utilisateur comme Uku Loskit et Mikko Ohtamaa ont suggéré et résolu mon problème. Le code est le suivant:
proxy = "YOUR_PROXY_GOES_HERE" proxies = {"http":"http://%s" % proxy} headers={'User-agent' : 'Mozilla/5.0'} proxy_support = urllib2.ProxyHandler(proxies) opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler(debuglevel=1)) urllib2.install_opener(opener) req = urllib2.Request(url, None, headers) html = urllib2.urlopen(req).read() print html
Passer les points-virgules en python. Ils ne feront pas de mal, mais ils sont mauvaises. En outre, vous ne recevrez aucune donnée avant de faire
urllib.urlopen (demande) .read () code>