2009-03-01 3 views
23

Wenn ich laufe dies:Python Fehler bei der Verwendung von urllib.open

import urllib 

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

print feed 

ich diese Ausgabe im interaktiven Fenster (PythonWin):

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

Ich erwarte die Quelle zu erhalten die obige URL Ich weiß, dass dies auf anderen Computern (wie denen in der Schule) funktioniert hat, aber das ist auf meinem Laptop und ich bin mir nicht sicher, was das Problem hier ist. Außerdem verstehe ich diesen Fehler überhaupt nicht. Was heißt das? Addinfourl? fp? Bitte helfen Sie.

+0

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

Antwort

51

Versuchen Sie folgendes:

print feed.read()

Siehe Python docs here.

+0

Vielen Dank! Das ist sehr hilfreich! Ich bin dem Abschluss dieses Programms einen Schritt näher gekommen! Der Link zu den Dokumenten ist auch sehr hilfreich! Irgendeine Idee über den Fehler? Ich wundere mich nur ... versuche, Wissen über diese Dinge zu erlangen. – Alan

+2

addinfourl ist kein Fehler; es ist ein Objekt. Du hast nichts falsch gemacht. Ersetzen Sie einfach "print feed" durch "print feed.read()" und Sie haben Ihren HTML-Code. – RexE

+0

OK, danke. Ich werde etwas darüber nachlesen. Versteh einfach nicht, warum ich das verstanden habe. Danke noch einmal! – Alan

16

urllib.urlopen gibt tatsächlich eine Datei-ähnliches Objekt so die Inhalte abrufen Sie verwenden müssen:

import urllib 

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

print feed.read() 
+0

Danke! Das ist sehr hilfreich! Ich bin dem Abschluss dieses Programms einen Schritt näher gekommen! – 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

danke, die decode ("iso-8859-1") war der kritische Schritt, der den Fehler "Typ str unterstützt nicht die Puffer-API", den ich gesehen habe, beendete! – JAL