Ich versuche, Zeilen von über 1200 HTM-Dateien, die auf meiner Festplatte sind, zu kratzen. Auf meinem Computer sind sie hier 'Datei: ///home/phi/Data/NHL/pl07-08/PL020001.HTM'. Diese HTM-Dateien sind sequenziell von * 20001.htm bis * 21230.htm. Mein Plan ist es schließlich, meine Daten in MySQL oder SQLite über eine Tabellenkalkulations-App zu werfen oder einfach direkt hinein, wenn ich eine saubere .csv-Datei aus diesem Prozess herausholen kann.Mehrere HTML-Dateien in CSV-Datei scannen
Dies ist mein erster Versuch Code (Python), Scraping, und ich habe gerade Ubuntu 9.04 auf meinem crappy Pentium IV installiert. Unnötig zu sagen, dass ich neu bin und einige Straßensperren habe.
Wie bekomme ich mechanisieren, um alle Dateien im Verzeichnis in Reihenfolge durchlaufen. Kann das sogar mechanisieren? Kann mechanisieren/Python/BeautifulSoup eine 'file: ///' Style-URL lesen oder gibt es eine andere Möglichkeit, auf /home/phi/Data/NHL/pl07-08/PL020001.HTM zu zeigen? Ist es schlau, das in 100 oder 250 Dateischritten zu machen oder einfach alle 1230 zu senden?
Ich brauche nur Zeilen, die mit diesem "<tr class="evenColor">
" beginnen und mit diesem "</tr>
" enden. Idealerweise möchte ich nur die Zeilen, die "SHOT" | "MISS" | "GOAL" enthalten, aber ich möchte die ganze Zeile (jede Spalte). Beachten Sie, dass "GOAL" fett gedruckt ist, muss ich das also angeben? Es gibt 3 Tabellen pro HTM-Datei.
Auch möchte ich den Namen der übergeordneten Datei (pl020001.htm) in die Zeilen, die ich kratzen, so dass ich sie in ihrer eigenen Spalte in der endgültigen Datenbank ID enthalten kann. Ich weiß nicht einmal, wo ich anfangen soll. Dies ist, was ich bisher habe:
#/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?
Sollte ich IDLE oder etwas ähnliches verwenden? nur Terminal in Ubuntu 9.04?
So, hier ist die HTML-Inhalt der Zeile:
'schreibe die csv via python' Ich weiß nicht, wie das geht, aber würde gerne wissen. Benötige ich "Import CSV"? – northnodewolf
@northnodewolf: Veröffentlichen Sie eine neue Frage mit den neuen Fakten über die HTML-Struktur und die CSV, die Sie aus der HTML-Tabelle erstellen möchten. –