Ce dont j'ai besoin, c'est d'extraire le cookie uid du premier site web et d'ouvrir le second avec (c'est une sorte d'autorisation).
cela ne fonctionne pas non plus avec ce code :
#!/usr/bin/env python
import urllib, urllib2, cookielib
import socket, Cookie
def extract(url):
jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders = [('User-agent',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20110201 Firefox/2.0.0.14')]
response = opener.open(url)
for cookie in jar:
precious_value = cookie.value
return precious_value
site1 = "mysite1.com"
site2 = "mysite2.com"
cp = urllib2.HTTPCookieProcessor()
cj = cp.cookiejar
cj.set_cookie(cookielib.Cookie(0, cookie_name,
extract(site1),
'80', False, 'domain', True, False, '/path',
True, False, None, False, None, None, None))
opener = urllib2.build_opener(urllib2.HTTPHandler(),cp)
opener.addheaders.append(('User-agent', 'Mozilla/5.0 (compatible)'))
print opener.open(site2).read()
ni de cette façon :
#!/usr/bin/env python
import urllib, urllib2, cookielib
def extract(url):
jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders = [('User-agent',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20110201 Firefox/2.0.0.14')]
response = opener.open(url)
for cookie in jar:
precious_value = cookie
return precious_value
site1 = "mysite1.com"
site1 = "mysite2.com"
jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-GB; rv:1.8.1.14) Gecko/20110201 Firefox/2.0.0.14')]
opener.addheaders = [('Cookies', extract(site1))]
response = opener.open(site2)
print response.read()
cependant, j'ai réussi ici avec la bibliothèque des "demandes". le code est beau :
cookies= dict(mycid='9ti6cACUi6AqxXBG2H9AMPkrfRbBJPalKTAh_bLcuQ8c8C')
r = requests.get(url, cookies = cookies)
print r.text
Cela me convient et je n'ai rien contre les demandes... mais quand même, qu'est-ce que j'ai fait de mal lors des deux premières tentatives ? Dans les deux cas, les procédures d'extraction fonctionnent bien et je vois que l'uid a été correctement extrait. Je suppose que le problème vient de la zone add_headers. La réponse est évidente mais je n'y arrive toujours pas. Quelqu'un peut-il m'aider ?
1) Quelle est la bonne façon de passer un cookie dans les en-têtes uniquement avec urllib ou urllib2 ?
2) Comment puis-je le passer comme un paramètre qui peut être modifié, et pas seulement comme une référence à un objet extrait ?
3) Comment dois-je le passer correctement comme un nom d'objet/valeur ?
Merci d'avance