2009-03-01 19 views
23

Quando ho eseguito questo:errore Python quando si utilizza urllib.open

import urllib 

feed = urllib.urlopen("http://www.yahoo.com") 

print feed 

ottengo questo output nella finestra interattiva (PythonWin):

<addinfourl at 48213968 whose fp = <socket._fileobject object at 0x02E14070>> 

mi aspetto di ottenere la fonte di l'URL sopra. So che questo ha funzionato su altri computer (come quelli a scuola), ma questo è sul mio portatile e non sono sicuro di quale sia il problema. Inoltre, non capisco questo errore. Cosa significa? Addinfourl? fp? Per favore aiuto.

+0

https://pythonhosted.org/ ndg-saml/urllib.addinfourl-class.html – noobninja

risposta

51

Prova questo:

print feed.read()

See Python docs here.

+0

Grazie! È molto utile! Sono un passo avanti verso la fine di questo programma! Anche il link ai documenti è molto utile! Qualche idea sull'errore? Mi stavo solo chiedendo ... cercando di acquisire conoscenza su queste cose. – Alan

+2

addinfourl non è un errore; è un oggetto. Non hai fatto nulla di sbagliato. Basta sostituire "feed di stampa" con "print feed.read()" e hai il tuo HTML. – RexE

+0

OK, grazie. Ne leggerò un po '. Semplicemente non capisco perché l'ho capito. Grazie ancora! – Alan

16

urllib.urlopen in realtà restituisce un oggetto simile a file in modo per recuperare il contenuto è necessario utilizzare:

import urllib 

feed = urllib.urlopen("http://www.yahoo.com") 

print feed.read() 
+0

Grazie! È molto utile! Sono un passo avanti verso la fine di questo programma! – Alan

7

in Python 3.0:

import urllib 
import urllib.request 

fh = urllib.request.urlopen(url) 
html = fh.read().decode("iso-8859-1") 
fh.close() 

print (html) 
+0

grazie, la decodifica ("iso-8859-1") è stata la fase critica che ha messo e terminato l'errore "Tipo str non supporta l'API del buffer" che stavo vedendo! – JAL

Problemi correlati