J'essaye de rayer des lignes de plus de 1200 fichiers .htm qui se trouvent sur mon disque dur. Sur mon ordinateur, ils sont ici 'file: ///home/phi/Data/NHL/pl07-08/PL020001.HTM'. Ces fichiers .htm sont séquentiels de * 20001.htm jusqu'à * 21230.htm. Mon plan est de finir par jeter mes données dans MySQL ou SQLite via une application de tableur ou tout simplement si je peux obtenir un fichier .csv propre de ce processus.Grattage de plusieurs fichiers html au format CSV
Ceci est ma première tentative de code (Python), grattage, et je viens d'installer Ubuntu 9.04 sur mon Pentium IV minuscule. Inutile de dire que je suis newb et que j'ai des barrages routiers.
Comment puis-je obtenir mécanize de parcourir tous les fichiers dans le répertoire dans l'ordre. Est-ce que mécaniser peut même faire ça? Peut-on mécaniser/Python/BeautifulSoup lire une url de style 'file: ///' ou existe-t-il un autre moyen de pointer vers /home/phi/Data/NHL/pl07-08/PL020001.HTM? Est-il intelligent de le faire en incréments de 100 ou 250 fichiers ou simplement envoyer tous les 1230?
J'ai juste besoin de lignes commençant par "<tr class="evenColor">
" et finissant par "</tr>
". Idéalement, je ne veux que les lignes qui contiennent "SHOT" | "MISS" | "GOAL" en eux, mais je veux la ligne entière (chaque colonne). Notez que "GOAL" est en gras alors dois-je le spécifier? Il y a 3 tables par fichier htm.
Je voudrais également que le nom du fichier parent (pl020001.htm) soit inclus dans les lignes que je racle afin que je puisse les identifier dans leur propre colonne dans la base de données finale. Je ne sais même pas par où commencer pour ça. C'est ce que j'ai pour le moment:
#/usr/bin/python
from BeautifulSoup import BeautifulSoup
import re
from mechanize import Browser
mech = Browser()
url = "file:///home/phi/Data/NHL/pl07-08/PL020001.HTM"
##but how do I do multiple urls/files? PL02*.HTM?
page = mech.open(url)
html = page.read()
soup = BeautifulSoup(html)
##this confuses me and seems redundant
pl = open("input_file.html","r")
chances = open("chancesforsql.csv,"w")
table = soup.find("table", border=0)
for row in table.findAll 'tr class="evenColor"'
#should I do this instead of before?
outfile = open("shooting.csv", "w")
##how do I end it?
Dois-je utiliser IDLE ou quelque chose comme ça? juste Terminal dans Ubuntu 9.04?
Voici donc le contenu HTML de la ligne:
'écrire le csv via python' Je ne sais pas comment faire cela, mais je voudrais savoir. Ai-je besoin d''importer csv'? – northnodewolf
@northnodewolf: Postez une nouvelle question avec les nouveaux faits sur la structure HTML et le fichier CSV que vous souhaitez créer à partir du tableau HTML. –