2010-06-02 1 views
0

Qu'est-ce que j'essaie de faire?Aide à la conversion de code en utilisant httlib2 pour utiliser urllib2

Visitez un site, récupérez un cookie, visitez la page suivante en envoyant l'info cookie. Tout fonctionne mais httplib2 me donne un trop de problèmes avec le proxy des chaussettes sur un site.

http = httplib2.Http() 
main_url = 'http://mywebsite.com/get.aspx?id='+ id +'&rows=25' 
response, content = http.request(main_url, 'GET', headers=headers) 
main_cookie = response['set-cookie'] 
referer = 'http://google.com' 
headers = {'Content-type': 'application/x-www-form-urlencoded', 'Cookie': main_cookie, 'User-Agent' : USER_AGENT, 'Referer' : referer} 

Comment faire exactement la même chose en utilisant urllib2 (récupération des cookies, en passant à la page suivante sur le même site)?

Merci.

Répondre

3

Utilisez cookielib, il va gérer tous les travaux liés aux cookies aussi automatiquement que le ferait un navigateur Web.

Exemple:

import urllib2 
import cookielib 

cookie_jar = cookielib.LWPCookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar)) 

#Get the first page with the cookie, installing it in the cookie jar automatically 
opener.open("http://yoursite.com/set-cookie") 

#Get the second page, passing on the cookie in the cookiejar. 
opener.open("http://yoursite.com/other") 

#Alternatively, you can also install this opener as the default urllib2 opener: 
urllib2.install_opener(opener) 
#Now all urllib2 requests will use cookies: 
urllib2.urlopen("http://yoursite.com/other") 
+0

Grand, cookielib est le chemin à parcourir! Dois-je utiliser opener.set_proxy() et opener.add_header() pour le support du proxy et de l'en-tête? Mon code existant prend un peu diff. approche. Il fait quelque chose comme req = urllib2.Request (url), comment adapter cela dans votre code? Je vous remercie! – ThinkCode

+0

Une fois que vous avez créé l'ouvreur, vous pouvez également installer l'ouvreur par défaut, de sorte qu'il soit utilisé pour chaque appel urllib2 (ajouté ci-dessus): urllib2.install_opener (ouvreur) – EnigmaCurry

Questions connexes