(geschlossen aber unerledigt) Mit grep bestimmten html tag durchsuchen.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

(geschlossen aber unerledigt) Mit grep bestimmten html tag durchsuchen.

Beitrag von mino23 » 27.05.2022 14:39:50

Ich durchsuche mit

Code: Alles auswählen

grep --with-filename $SUCHBEGRIFF
regelmäßig einen Stapel Webseiten die alle unter file:/// gespeichert sind. Das Ergebnis wird anschließend via sed zu einer html Linkliste umgeschrieben und ich klicke mich durch die Links, bis ich den passenden Text gefunden habe. Was mich stört sind unsinnig angezeigte Suchergebnisse, weil jede einzelne Webseite vom DOCTYPE bis runter zum letzten html tag abgesucht wird. Der title tag, Meta-Angaben, Navigation, Footer und so weiter wird mir als Suchergebnis ausgeworfen, sofern der Suchbegriff darin vorkommt. Grundsätzlich kann ich damit leben, ich möchte das jetzt ändern.

Der mich interessierende Inhalt liegt immer im Bereich des div class="content". Ich habe das mal angetestet, komme damit aber nicht weiter, weil ich den Suchbegriff nicht mit dem Filter zusammen bringe, der vermutlich nicht stimmt oder die Option -P wird nicht ausgeführt:

Code: Alles auswählen

grep -PH '(?<=<div class="content">)[^<]*'
Gibt es einen Weg, um selektiv nur das div abzusuchen und das nach Möglichkeit mit grep ohne tools wie xmllint, xmlstarlet, saxon-lint oder einem der vielen search engines die als perl oder php script im www zu finden sind? Ich könnte auch alles html außerhalb des div wegfiltern. Das ist mir aber zu viel Aufwand. Ansonsten lasse ich es wie es ist.
Zuletzt geändert von mino23 am 29.05.2022 11:15:51, insgesamt 1-mal geändert.

reox
Beiträge: 2459
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Mit grep bestimmten html tag durchsuchen.

Beitrag von reox » 27.05.2022 17:18:54

scnr: https://stackoverflow.com/questions/173 ... 54#1732454

Vor allem was du ja vermutlich wirklich willst, ist den suchstring im text und nicht im markup zu finden. Was dir ggf hilft wäre Debianlinks und -dump: https://manpages.debian.org/bullseye/li ... .html#dump

mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

Re: Mit grep bestimmten html tag durchsuchen.

Beitrag von mino23 » 29.05.2022 11:14:52

Danke @reox für die Idee. Das ist aber alles zu aufwendig. Ich schreibe jetzt Kopien der Webseiten und strippe es runter auf das div. Das ist mir aber ebenfalls noch zu viel Aufwand, auch wenn es bei rund 17000 Dateien nur etwa 1 Sekunde Rechnerzeit in Anspruch nimmt. Bei einem grep wird nur eine Datei erzeugt und fertig. Werde aber weiter darüber nachdenken.

reox
Beiträge: 2459
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: (geschlossen aber unerledigt) Mit grep bestimmten html tag durchsuchen.

Beitrag von reox » 29.05.2022 19:51:37

was hält dich davon ab sowas wie xmllint zu verwenden?

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: (geschlossen aber unerledigt) Mit grep bestimmten html tag durchsuchen.

Beitrag von TRex » 29.05.2022 20:27:48

Falls dir die Vorstellungskraft zu reox Tipp fehlt: xmllint (oder ähnliches Tool) mit XPath wie folgt füttern (den Parameter findest du raus): //div[@class="content"]//a/@href gibt dir alle Links aus, die auf deine Beschreibung zutreffen.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Antworten