Thread I/O Operations: Pfade übertragen auf einen HTML-Parser
(17 answers)
Opened by lin at 2010-10-03 13:29
Kannst bitte weniger konfus schreiben? An manchen Stellen muss ich echt raten was du eigentlich willst.
Wenn ich zusammenfassen darf nachdem ich deinen Beitrag 15 Minuten studiert habe. - Du möchtest die Daten von der Webseite in eine Datenbank (MySQL) schreiben. Und hast schon etwas SQL Erfahrung. Dazu solltest du dir das DBI-Modul ansehen. - Nach folgenden Datensätzen suchst du:
Ergänzen würde ich hier noch:
- Du willst die Daten als CSV-Dateien abspeichern. Da schau dir mal Text::CSV-Modul an. - Du fragst wie ich das Script schreiben konnte ohne das script zu kennen. Es war nicht schwer alles zusammen in ein Script zu packen, alle Einzelteile waren ja schon vorhanden und die Logik klar. Aber dazu noch eine grundsätzliche Frage. Hast du den Webseitenbetreiber mal gefragt, ob er dir die Daten nicht direkt geben kann? Dann kann man sich das aufwändige Parsen sparen. Zum Token-Parser: "HTML::TokeParser" einige mögen diese Art der Parser, da sie schnell sind, aber ich bevorzuge Parser, die einen Objektbaum erstellen wie z.BHTML::TreeBuilder. Für mich sind sie leichter zu handhaben. Zwar ist das langsamer, aber sehe ich nicht kritisch, da man die Daten nur einmal aus den Dokumenten holen will. Das erstellen des Scriptes: Zum Testen würde ich eine kleine repräsentative Auswahl der zu parsenden Dateien machen und mit ihnen den Parser optimieren, bis du das gewünschte Ergebnis bekommst. Es ist nicht sinnvoll zu Anfang gleich alle 20.000 oder mehr Dateien zu bearbeiten. Mache viele Sicherheitskopien des Scriptes in jedem Stadium deiner Arbeit. Gerade als Anfänger verrennt man sich leicht in Sackgassen. Wenn man ältere Versionen eines Scriptes hat, kann man von da aus einen anderen Weg versuchen. Wenn man etwas neues oder Unbekanntes versucht, sollte man erst ein kleines simples Testscript schreiben. In so einem kleinen Script, in dem es nur ein potentielles Problem gibt, ist leicht zu überblicken. Damit kann man auch hier im Forum um Hilfe bitten, wenn man selber keine Lösung findet. |