2012-08-23 15 views
19

pitone urllib2 urlopen risposta:pitone urllib2 urlopen risposta

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

previsto:

{ "token": "mYWmzpunvasAT795niiR"}

risposta

25

È necessario associare l'oggetto risultante simile a un file a una variabile, o therwise l'interprete basta discariche tramite 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>> 

Per ottenere i dati effettivi è necessario eseguire un read().

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

Per vedere le intestazioni restituite:

>>> print f.headers 
Date: Thu, 23 Aug 2012 00:46:22 GMT 
Expires: -1 
Cache-Control: private, max-age=0 
... etc ... 
+0

Ho una domanda qui. Se non immagazzino il contenuto di 'f' in' data', e semplicemente eseguo 'f.read()', ottengo il contenuto solo una volta. Se faccio di nuovo 'f.read()', stampa una stringa vuota. Perché? –

+0

@SidharthSamant: poiché si sono consumati tutti i dati dallo stream, non è memorizzato internamente da 'urllib2'. – mhawke

4

Aggiungere quanto segue dopo la chiamata al urlopen

print feed.read() 
2

Forse troverete utilizzando il requests library più intuitivo da usare rispetto urllib2.

+0

Buona chiamata, grazie! –