thomas68
Goto Top

Zeilen aus mehreren html Dokumenten auslesen und in neue txt-Datei schreiben

Hallo zusammen, ich hoffe jemand kann mir helfen. Probiere schon den ganzen Tag rum, wie man das lösen könnte - mittels Texteditoren etc., aber no way.

Guten Abend ,
sitze schon so lange davor, dass ich bald anfange alles abzutippen. Ich habe etwa 1000 html Dateien, die in etwa alle den gleichen Aufbau haben und uns früher als Datenblätter im Netz gedient haben. Unser Webauftritt basierte nicht auf einer Datenbank, das soll jetzt geändert werden, aber wer will schon alles neu eintippen ?

Nun zum Problem, da alle Dateien in etwa den gleichen Aufbau haben, stehen die Informationen immer nach den gleichen Begriffen, in der, bzw. den darauffolgenden 2 Zeilen. Ich bräuchte also eine bat, die mir alle Dateien nacheinander nach 5 Suchbegriffen durchsucht, um sodann die nächste, bzw. nächsten 2 Zeilen der durchsuchten Datei in einer txt. Datei ausgibt, damit ich daraus unter Excel eine einfache Datenbank erstellen kann.

Sitzte schon den ganzen Tag darüber, habe auch eine bat gefunden hier im Forum, allerdings wird hier das gesuchte Ergebnis bereits durch einen Doppelpunkt vom Suchbegriff getrennt und steht nicht erst in der nächsten Zeile. Vielen Dank, für's Lesen schon mal ...

Gruss
Thomas

Content-Key: 127963

Url: https://administrator.de/contentid/127963

Printed on: April 26, 2024 at 10:04 o'clock

Mitglied: 60730
60730 Oct 26, 2009 at 21:37:31 (UTC)
Goto Top
Servus,

drei bitten:

  • welchen der vielen (suchen & ersetzen) Threads hast du denn gefunden?
  • wie sieht eine Beispiel HTML aus?
  • sind das immer die gleichen Suchen?

Mit den Infos kann man dir dann auch gezielt weiterhelfen.

Mehr oder weniger wird es aber auf
  • eine Schleife mir for
  • Findstr /n
herauslaufen.

Gruß
Member: Thomas68
Thomas68 Oct 26, 2009 at 22:15:35 (UTC)
Goto Top
Hallo,

danke für Deine Antwort. Jede html enthält immer gleiche Suchbegriffe.

blablablablabla
balbla
<!-- Typ / Beginn --> - wäre ein zu suchendes Element und den Inhalt der darauffolgenden Zeile bräuchte ich ausgelesen
blabla
blablabla
<!-- Beschreibung / Beginn --> - vväre das nächste zu suchende Element, wieder bräuchte ich den Inhalt der folgenen Zeile ausgelesen
blabla
blabla

So entsteht mittels 5 immer gleicher Suchen ein Datensatz in der neuen txt Datei. So z.b. Typ: ALFA Beschreibung: 4 Zylinder : Hubraum: 2232 etc.
Würde mir schon helfen, wenn ich gezielt alles anhand von Zeilennumern herauslöschen könnte, so dass der rest stehen bliebe und ich die Leerzeilen lösche, versuche das den ganzen tag mit den unterschiedlichsten texteditoren, leider alles ohne nennenswerten Erfolg.

Muss halt alle 1000 Datenblätter so auswerten und in einem File zusammenfassen, damit dieses als Basis für die neue Datenbank dienen kann. Vielen Dank und einen schönen Abend

Gruss
Thomas
Member: maretz
maretz Oct 27, 2009 at 06:18:51 (UTC)
Goto Top
Moin,

kannst du perl (die Script-Sprache)? Damit wäre das ne Sache von wenigen Minuten :

a) Datei in nen Array einlesen
b) Zeile für Zeile durchlaufen lassen und mittels Pattern-Match prüfen ob es sich um einen deiner Schlüsselbegriffe handelt
c) falls ja -> Die Zeile + die darauffolgenden 2 Zeilen in nen neuen Array packen
d) Array ausgeben (entweder per Konsole oder in ne Datei schreiben)

Das ganze dann über alle 1000 Dateien laufen lassen (entweder per Batch und den Dateinamen als Parameter mitgeben oder direkt ins Programm eben reinsetzen das er das für alle Dateien im aktuellen ordner machen soll).

Thema erledigt... Und da es sich dabei wirklich um ein simples Perl-Programm handelt hättest du es selbst ohne Erfahrung in max. 3-4h geschrieben (sofern du irgendeine Programmiersprache kennst und dir somit die Programmierung generell nicht ganz fremd ist). Mit etwas Erfahrung hättest du max. 30 min benötigt..
Member: Thomas68
Thomas68 Oct 27, 2009 at 08:15:46 (UTC)
Goto Top
Guten morgen,
danke für den Tipp, dass man mit einer Programmiersprache ein spezielles Programm schreiben kann. No have is no have ....

Muss auch mit einer bat gehen, da die Werte immer in den gleichen Zeilen stehen. Habe mich an einem batch hier aus dem Formum versucht, aber alles was es macht, ist die Ergebnis.txt zu löschen, fallls man sie vorher anlegt.

Wollte eigentlich die Zeile 37 auslesen, die letzte zeile hätte er zu Testzwecken auch gelesen :

@echo off & setlocal
set "Erg=C:\Ergebnis.txt"
set "Ordner=C:\XXX_DATEN\AKTUELL\"

if exist "%Erg%" del "%Erg%"
for %%i in ("%Ordner%\*.txt") do call :ProcessFile "%%i"
goto :eof

:ProcessFile
set /p Zeile1=<%37
for /f "usebackq delims=" %%a in (%1) do set "ZeileN=%%a"
"%Erg%" echo %Zeile1%_%ZeileN%
goto :eof

Naja, wird schon noch. Muss jetzt erst mal den gestrigen Tag nachholen. Wer braucht schon eine Website, die auf Datenbank basiert .... face-wink
Mitglied: 76109
76109 Oct 27, 2009 at 08:22:35 (UTC)
Goto Top
Hallo zusammen!

Noch wesentlich einfacher, ließe sich das Ganze per VB-Script direkt in eine Excel-Datei schreiben. Aber mit ner blablabla und etc.-Beschreibung, kann ich leider nix anfangen. Von daher bleibt wohl nur der manuelle und mühsame Weg über den Text-Editorface-smile

Gruß Dieter