first attempt - myjar has no attribute 'value'

second attempt - 

re:

myjar = cookielib.CookieJar()
for cookie in myjar:
    print cookie.value

In this case the above code should print a single 'B'.


This does work.  However, it only ever returns me one value.  For
instance, the first three are BZh.  My code is:

def urlsearch(times):
    x = 12345
    count = 0
    myjar = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(myjar))
    while count < times:
        param = urllib.urlencode({'busynothing': x})
        z = 
opener.open("http://www.pythonchallenge.com/pc/def/linkedlist.php?%s";
% param)
        text = z.read()
        lister = string.split(text)
        x = lister[-1]
        count = count + 1
    return myjar

Now, if I'm using the jar the way I think I am, I'm creating it
outside the while loop, and then when I use the opener within the
while loop (to open each successive url), I should be adding a new
cookie, right? so that I have a jar full of multiple cookies? But it's
acting like it's just *replacing* the old cookie with the new one,
because when I'm done with that function, I do:

jar6 = urlsearch(2)
for cookie in jar6:
    print cookie.value

(2 is number of times)

If I do urlsearch(1), I get B for the value (as expected).  If I do
urlsearch(2), I get Z (and only Z. Not BZ). Ditto urlsearch(3), I get
h (and only h, not BZh).

Is it truly replacing the old cookie with the new one? That isn't what
I want to do, and not how I would think a cookie jar would work.  Am I
setting it up incorrectly?



> > Yes, whenever the documentation talks about something being "iterable",
> > they really mean that we can use a for loop across it.  

This seems perfectly rational to me.  However, having the
"cookie.value" part used in an actual example would have been very
helpful.


> > I wonder why; I haven't been able to figure out a good reason for this
> > kind of interface.  Are cookie jars files known to be large?

I assumed that a cookie jar would work kind of like a list. I could
add new cookies to it at each step of my while loop, and then iterate
over the "list" of cookies to get out the pieces of info I wanted. I'm
hoping this is correct, because that's how I *want* to use this cookie
jar!

> This only pushes the mystery one step back, though - the attribute of the 
> Cookie that is recursively iterated is called 'item', but the Cookie class 
> defined in cookielib has no attribute 'item'.

Yeah, it was kind of confusing why it was called an "item" in one
version and a "value" in another. But then, most things are confusing
to me ;)

> Take a look at cookielib.deepvalues() if you are curious.

I'm looking at the cookielib page - why can't I find .deepvalues()?

It's funny to me, but some of these documentation pages I find exactly
what I'm looking for, including examples, and can immediately put it
to practical use in my code.  Some of the libraries I read a hundred
times and can never seem to find what I'm looking for.

In any case, if anyone has any ideas why my cookiejar isn't collecting
a bunch of cookies but instead only returning the last one, I'd be
very grateful!

Thanks again for all your help and suggestions.

~Denise
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to