Résolu, merci
Résolu, merci
C'est normal, toute la partie de la ligne 21 à 27 devrait être dans ta boucle for sur les noms de fichiers, et pas en dehors. Sinon uniquement le dernier fichier sera traité:Aussi, à ta place j'écrirais au fur et à mesure dans resultats.csv plutôt que de tout engranger dans datasaved (sauf si tu en as une utilisation ultérieure particulière).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 for file_name in glob.glob(os.path.join(path, "*.html")): with open(file_name , encoding="UTF-8") as html_file: soup = bsoup(html_file, "html.parser") datasaved="" for tr in soup.find_all('tr'): data="" for td in tr.find_all('td'): data=data+","+td.text if len(data) !=0: datasaved = datasaved + "\n" + data with open("/home/user/Téléchargements/Parsing/resultats.csv", 'a') as fichier: fichier.write (datasaved) print(datasaved)
À propos de:Le test sur la longueur de la chaîne data sera toujours vrai étant donné qu'il contient au moins une virgule. D'ailleurs en procédant de cette manière, tu vas te retrouver avec un chaîne commençant par une virgule vu que data est une chaîne vide au départ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 data=data+","+td.text if len(data) !=0: datasaved = datasaved + "\n" + data
Tu devrais utiliser le module csv plutôt que de t'amuser à concaténer les virgules et les sauts de ligne toi-même. Il suffit de créer une liste avec les champs de ton csv.
Partager