2009-03-01 12 views
23

Cuando ejecuto esto:de error al utilizar Python urllib.open

import urllib 

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

print feed 

consigo este resultado en la ventana interactiva (PythonWin):

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

estoy esperando para conseguir la fuente de la URL anterior. Sé que esto ha funcionado en otras computadoras (como las de la escuela), pero esto está en mi computadora portátil y no estoy seguro de cuál es el problema aquí. Además, no entiendo este error en absoluto. Qué significa eso? Addinfourl? fp? Por favor ayuda.

+0

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

Respuesta

51

Prueba esto:

docs

print feed.read()

Ver Python here.

+0

¡Gracias! ¡Eso es muy útil! ¡Estoy un paso más cerca de terminar este programa! ¡El enlace a los documentos también es muy útil! Alguna idea sobre el error? Solo me preguntaba ... tratando de obtener conocimiento sobre estas cosas. – Alan

+2

addinfourl no es un error; es un objeto. No has hecho nada mal. Simplemente reemplace "print feed" con "print feed.read()" y tiene su HTML. – RexE

+0

OK, gracias. Voy a leer sobre eso. Simplemente no entiendo muy bien por qué lo tengo. ¡Gracias de nuevo! – Alan

16

urllib.urlopen realidad devuelve un objeto de tipo fichero de modo para recuperar el contenido que tendrá que utilizar:

import urllib 

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

print feed.read() 
+0

¡Gracias! ¡Eso es muy útil! ¡Estoy un paso más cerca de terminar este programa! – Alan

7

en 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

gracias, la decodificación ("iso-8859-1") fue el paso crítico que puso y terminó el error "Type str does not support the buffer API" que estaba viendo! – JAL

Cuestiones relacionadas