Typeerror: kann nicht verketten 'str' und 'instance' Objekte (Python urllib)
Frage
Schreiben ein Python-Programm, und ich kam mit diesem Fehler, während der urllib.urlopen
Funktion.
Traceback (most recent call last):
File "ChurchScraper.py", line 58, in <module>
html = GetAllChurchPages()
File "ChurchScraper.py", line 48, in GetAllChurchPages
CPs = CPs + urllib.urlopen(url)
TypeError: cannot concatenate 'str' and 'instance' objects
url = 'http://website.com/index.php?cID=' + str(cID)
CPs = CPs + urllib.urlopen(url)
Lösung
urlopen (url) liefert eine dateiähnliche Objekt. Um die Zeichenfolge Inhalte zu erhalten, versuchen
CPs = CPs + urllib.urlopen(url).read()
Andere Tipps
urllib.urllopen nicht einen String zurückgibt, es gibt ein Objekt
doc
If all went well, a file-like object is returned.
Das Problem ist in dieser Zeile: CPs = CPs + urllib.urlopen(url)
Ich gehe davon aus CPs
eine Zeichenfolge jedoch urllib.urlopen(url)
ist eine Datei wie Objekt zurückgibt
Wenn Sie den Inhalt der Datei in url
mit CPs
anschließen möchten, dann müssen Sie so etwas wie dies zu tun. CPs = CPs + urllib.urlopen(url).read()
Was ist CPs? Es sieht aus wie es eine Zeichenfolge ist. urlopen wird eine Instanz einer Datei ähnlichen Objekt zurückgeben, kein String. Siehe - http://docs.python.org/library/urllib.html .
Der Fehler wird nicht vom urlopen geworfen, sondern weil Sie versuchen, eine Zeichenfolge mit einer Objektinstanz verketten.