2010-04-07 27 views
2

J'utilise ActivePython 2.5.1 et le paquet cookielib pour récupérer des pages web.Comment afficher un cookie spécifique?

J'aimerais afficher un cookie donné du cookiejar au lieu de la chose:

#OK to display all the cookies 
for index, cookie in enumerate(cj): 
    print index, ' : ', cookie   

#How to display just PHPSESSID? 
#AttributeError: CookieJar instance has no attribute '__getitem__' 
print "PHPSESSID: %s" % cj['PHPSESSID'] 

Je suis sûr qu'il est très simple mais googler cela n'a pas renvoyer les échantillons.

Merci.

Répondre

4

Le cookiejar n'a pas d'interface de type dict, seule l'itération est prise en charge. Vous devez donc implémenter une méthode de recherche vous-même.

Je ne suis pas sûr de l'attribut de cookie que vous voulez faire faire la recherche. Exemple, en utilisant le nom:

def get_cookie_by_name(cj, name): 
    return [cookie for cookie in cj if cookie.name == name][0] 

cookie = get_cookie_by_name(cj, "PHPSESSID") 

Si vous n'êtes pas familier avec la syntaxe [...], il est un list comprehension. Le [0] sélectionne ensuite le premier élément de la liste des cookies correspondants.

+0

Merci pour le conseil. – Gulbahar