python urllib2 urlopen response
Asked Answered
W

3

19

python urllib2 urlopen response:

<addinfourl at 1081306700 whose fp = <socket._fileobject object at 0x4073192c>>

expected:

{"token":"mYWmzpunvasAT795niiR"}

Wampler answered 23/8, 2012 at 0:32 Comment(0)
S
26

You need to bind the resultant file-like object to a variable, otherwise the interpreter just dumps it via repr:

>>> import urllib2
>>> urllib2.urlopen('http://www.google.com')
<addinfourl at 18362520 whose fp = <socket._fileobject object at 0x106b250>>
>>> 
>>> f = urllib2.urlopen('http://www.google.com')
>>> f
<addinfourl at 18635448 whose fp = <socket._fileobject object at 0x106b950>>

To get the actual data you need to perform a read().

>>> data = f.read()
>>> data[:50]
'<!doctype html><html itemscope="itemscope" itemtyp'

To see the headers returned:

>>> print f.headers
Date: Thu, 23 Aug 2012 00:46:22 GMT
Expires: -1
Cache-Control: private, max-age=0
... etc ...
Shore answered 23/8, 2012 at 0:47 Comment(2)
I have one question here. If I don't store the contents of f to data, and simply perform f.read(), I get the contents only once. If I do f.read() again, it prints an empty string. Why is that?Grosswardein
@SidharthSamant: because you have consumed all of the data from the stream - it is not stored internally by urllib2.Shore
P
4

Add the following after your call to urlopen

print feed.read()
Preece answered 23/8, 2012 at 0:47 Comment(0)
S
1

Perhaps you will find using the requests library more intuitive to use than urllib2.

Spherule answered 23/8, 2012 at 2:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.