Ecrire le résultat de la requète print dans un fichier .txt

Fermé
alex240 Messages postés 163 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 19 août 2014 - 31 août 2013 à 19:37
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 1 sept. 2013 à 16:48
Bonjour,
je débute en pyhthon,
comment peut on stocker la source html d'une page web (avec urlopen) dans un fichier texte:

sock = urllib.request.urlopen("http://www.flightaware.com/ressources/airport/LFPG/weather")

htmlSource = sock.read

sock.close()

comment faire pour que le code source soit écrit dans un fichier txt pour qu'après je puisse le réouvrir et sélectionné les infos qui m'intérèssent avec les balises.
A voir également:

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
1 sept. 2013 à 12:55
Salut, rien de plus simple:
import urllib

sock = urllib.urlopen("http://www.flightaware.com/ressources/airport/LFPG/weather")
htmlSource = sock.read()
sock.close()

with open("x.txt", "w+") as f:
    f.write(htmlSource)
0
alex240 Messages postés 163 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 19 août 2014 6
1 sept. 2013 à 13:52
bonjour, merci pour cette réponse rapide le seul hic:
TypeError: must be str, not bytes
je suis sur python .3.3.2 et donc j'ai du utilisé urllib.request.urlopen, ci je comprend bien la fonction write n'écrit que en string mais pas en bytes.
Y a t-il une autre solution?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
1 sept. 2013 à 16:48
Ah désolé j'assumair Python 2.7 (même si je préfère le 3.3, c'est juste que le 2.7 est encore beaucoup utilisé)
import urllib.request

try:
    sock = urllib.request.urlopen("http://www.flightaware.com/ressources/airport/LFPG/weather")
    htmlSource = sock.read()
    sock.close()
except urllib.error.HTTPError as e:
    htmlSource = e.read()
with open("x.txt", "w+b") as f:
    f.write(htmlSource) 
Ici il faut prévoir si une erreur HTTP arrive comme la page visée est une page de 404. Et il faut préciser qu'on écrit le fichier en mode byte et pas string, le selecteur "b" dans le mode d'ouverture.
0