10
votes

Python Urllib2: Réinitialisation de la connexion par pair

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 CODE>

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


1 commentaires

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


4 Réponses :


2
votes

Tout d'abord, comme Steve a dit, vous avez besoin de réponse.Read (), mais ce n'est pas votre problème xxx

pouvez-vous donner des détails sur l'erreur? Vous pouvez l'obtenir comme ceci: xxx

source: http://www.voidspace.org.uk/python/articles/urllib2.shtml

(Je l'ai mis dans un commentaire mais il a mangé mes nouvelles lignes)


0 commentaires

0
votes

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


1 commentaires

Faire semblant des en-têtes d'agent utilisateur résolvez mon problème. Merci beaucoup!



9
votes

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


0 commentaires

1
votes

Vous trouverez peut-être que le demande module est un niveau beaucoup plus facile à utiliser Remplacement pour URLLIB2.


1 commentaires

Pour toute personne utilisant le module de demande, Ce site donne un exemple (défiler vers le bas).