Timeout-Fehler

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Hi,

ich greife auf HTML-Seiten im Netz zu und hole mir von dort jeweils einen Wert.

Code: Alles auswählen

        # ...
        url = urllib.request.urlopen(url)
        source = str(url.read())
        url.close()
        # ...
Problem ist jetzt, dass nach geraumer Zeit, wo der Code wunderbar funktioniert hat, jetzt plötzlich Fehlermeldungen kommen. In der Konsole gibt es eine Reihe von Zeilen, die ausgespuckt werden, im Kern scheint aber die HTML-Seite nicht verarbeitbar zu sein:

Code: Alles auswählen

    raise ValueError("unknown url type: %s" % self.full_url)
ValueError: unknown url type: h
Ich habe noch keinen Plan, wie ich den Fehler umschiffen kann. Ich habe das jetzt erst einmal mit try-except abgefangen.

Zum Verständnis:

* Kann es sein, dass mich die Website erfasst und geblockt hat? Ich habe im Intervall von 5 Sekunden 7 Seiten bei denen geparst. Das scheint mir erst einmal kein Traffic zu sein...

Hinweise nehme ich gerne an...
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

[s]OK. Fehler erkannt, Fehler gebannt.[/s]

[s]Ich hatte die Seite im Browser offen, dort scheint sie im Cache noch vorhanden gewesen zu sein. Ich bekam dort gerade einen Fehler, dass die Seite nicht mehr verfügbar ist...[/s]

Ich kann die Seiten im Browser aufrufen, nur mit Python nicht abrufen... Hinweise wären super.
Zuletzt geändert von pixewakb am Dienstag 18. September 2012, 18:51, insgesamt 2-mal geändert.
BlackJack

@pixewakb: Ich tippe mal darauf dass Du irgendwo eine Liste mit URLs übergeben möchtest, da aber eine einzelne URL als Zeichenkette übergibst. Lass Dir `url` doch mal vor dem herunterladen ausgeben.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also zum einen würde ich das Requests-Modul immer den `urllib`-Zeug aus der Standard-Lib vorziehen, zum anderen wäre es mal schön, ein lauffähiges Minimalbeispiel inkl. der Webseite zu sehen...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

http://docs.python-requests.org/en/latest/index.html#

Ich habe es direkt auf der Seite nicht gefunden? Python 2.7 oder 3.2???

Ich arbeite momentan gerne und mehrheitlich mit Python 3.2.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ja, das könnte offensichtlicher sein, aber in de FAQs steht es: http://docs.python-requests.org/en/late ... unity/faq/

Python 3.x wird also unterstützt :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten