1

Possible Duplicate:
How to use Python to login to a webpage and retrieve cookies for later usage?

I want to download whole webpage source from a service that handles cookies in some unusual way. I wrote a script that actually works and seems to be fine however at some point it returned such error:

urllib2.HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: Found

My script works in loop and changes link to subpage wchich content im interested to download.

I get a cookie, send a package of data and then i am able to get to porper link then download html.

script look like this:

import urllib2
data = 'some_string'
url = "http://example/index.php"
url2 = "http://example/source"  
req1 = urllib2.Request(url)
response = urllib2.urlopen(req1)
cookie = response.info().getheader('Set-Cookie')
## Use the cookie is subsequent requests
req2 = urllib2.Request(url, data)
req2.add_header('cookie', cookie)
response = urllib2.urlopen(req2)
## reuse again
req3 = urllib2.Request(url2)
req3.add_header('cookie', cookie)
response = urllib2.urlopen(req3)
html = response.read()

Ive been reading sth ab cookiejar/cookielib coz using this lib i am supposed to ged rid of this error mentioned above however i have no clue how to reporoduce my code to be used by: http.cookiejar, urllib.request

i tried sth like this:

import http.cookiejar, urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener( urllib.request.HTTPCookieProcessor(cj) )
r = opener.open(url)  # now cookies are stored in cj
r1 = urllib.request(url, data)  #TypeError: POST data should be bytes or an iterable of bytes. It cannot be str.
r2 = opener.open(url2)
print( r2.read() )

But its not working as my first script.

ps. Sorry for my english but im am not native.

Community
  • 1
  • 1
modzello86
  • 433
  • 7
  • 16

1 Answers1

0

@Piotr Dobrogost thanks for the link, it solved the issue.

TypeError solved by using data=b"string" instead of data="string"

Ive got still some issues due to porting to python3 but issue is to be closed.

modzello86
  • 433
  • 7
  • 16