AttributeError: 'Byte' Objekt hat kein Attribut 'Wartezeit'
import re, urllib.request
textfile = open('depth_1.txt','wt')
print('enter the url you would like to crawl')
print('Usage - "http://phocks.org/stumble/creepy/" <-- with the double quotes')
my_url = input()
for i in re.findall(b'''href=["'](.[^"']+)["']''', urllib.request.urlopen(my_url).read(), re.I):
print(i)
for ee in re.findall(b'''href=["'](.[^"']+)["']''', urllib.request.urlopen(i).read(), re.I): #this is line 20!
print(ee)
textfile.write(ee+'\n')
textfile.close()
Nach der Suche rund um für eine Lösung zu meinem problem, ich konnte nicht eine Lösung finden. Der Fehler tritt in Zeile 20 (AttributeError: 'Byte' Objekt hat kein Attribut 'Wartezeit'). Verstehe ich nicht die Fehler, ich bin auf der Suche nach einer Antwort und einer Erklärung, was ich falsch gemacht habe. Danke!
- was ist
i
, die den Fehler verursacht? - es ist ein Kommentar am Ende des
for ee in ...
Linie, bezeichnet als Linie #20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der docs für
urllib.request.urlopen
:Wenn
urllib.request.urlopen
nicht erhalten, ein string, wird davon ausgegangen, dass es ein Request-Objekt. Sie übergeben ein bytestring, das ist der Grund, warum es fehlschlägt, z.B.:Zu beheben, konvertieren Sie Ihre bytestring zurück zu einem str mit der Entschlüsselung mit dem entsprechenden codec:
Oder nicht verwenden bytestrings in den ersten Platz.
Dieser Fehler wird verursacht, indem Sie nicht verwenden können, einen bytestring als url, überprüfen Sie die Codierung von Ihrem Programm
Weil es ein Attribut Fehler, einige code entweder Sie schrieb oder in einer Bibliothek, die Sie verwenden, versucht, auf die timeout-Eigenschaft eines Objekts übergeben wurde. In Ihrem Fall hatten Sie ein bytes-Objekt übergeben, das ist wahrscheinlich Ihr problem. Sie haben wahrscheinlich passieren das falsche Objekt Typ irgendwo Rum. Wenn Ihr sicher, dass die Objekte, die Sie übergeben werden, korrekt sind, befolgen Sie die traceback zu sehen, wo genau timeout aufgerufen wird, und überprüfen Sie, ob Sie sagen kann, was für ein Objekt es erwartet.