TypeError: ne peut pas concaténer des objets 'str' et 'instance' (urllib python)
Question
L'écriture d'un programme de python, et je suis venu avec cette erreur lors de l'utilisation de la fonction urllib.urlopen
.
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)
La solution
urlopen (url) retourne un objet de type fichier. Pour obtenir le contenu de la chaîne, essayez
CPs = CPs + urllib.urlopen(url).read()
Autres conseils
urllib.urllopen ne renvoie pas une chaîne, elle retourne un objet
doc
If all went well, a file-like object is returned.
Le problème est dans cette ligne: CPs = CPs + urllib.urlopen(url)
Je suppose CPs
est une chaîne mais retourne urllib.urlopen(url)
un fichier comme objet
Si vous souhaitez rejoindre le contenu du fichier à url
avec CPs
alors vous devez faire quelque chose comme ceci:. CPs = CPs + urllib.urlopen(url).read()
Qu'est-ce que les PC? On dirait qu'il est une chaîne. urlopen renvoie une instance d'un objet de type fichier, pas une chaîne. Voir - http://docs.python.org/library/urllib.html .
L'erreur n'est pas jeté du urlopen, mais parce que vous essayez de concaténer une chaîne avec une instance d'objet.