stefankittel
Goto Top

Abhängigkeiten in einer HTML-Datei finden

Hallo,

ich arbeite gerade an einem Projekt in PHP (7.0) um webseiten statisch abzulegen.
Um alle Folgeseiten und Abhängigkeiten (css, bilder, js, etc) zu finden nutze ich DOMDocument, getElementsByTagName und getAttribute.
Das klappt bei 99% der Dateien sehr gut.

Aber es gibt ein paar wo ich noch keine richtig gute Idee habe.
Es soll so unabhändig wie möglich sein. Ich möchte also ungern feste Pfade zum suchen hinzufügen.

Beispiel
<div class="et_pb_slide et_pb_bg_layout_dark et_pb_media_alignment_center et_pb_slide_1" style='background-color:#ffffff;background-image:url(/wp-content/uploads/2016/07/bild1.jpg);'>
Es ist ein Sub-Attribut und ohne vollständige URL.

Jemand eine Idee dafür?

Danke

Stefan

Content-Key: 353719

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

Printed on: April 19, 2024 at 15:04 o'clock

Mitglied: 134464
134464 Nov 05, 2017 updated at 08:17:24 (UTC)
Goto Top
Lass doch einfach ein Regex über die Seiten laufen.

Btw.
https://www.heise.de/download/product/xenus-link-sleuth-5981
Member: StefanKittel
StefanKittel Nov 05, 2017 at 09:29:56 (UTC)
Goto Top
Moin,

ja, dachte ich auch.
Aber das Beispiel oben enthält weder den Domänennamen noch http(s).
Ich müßte nach "url(" suchen. Und davon kann in Styles und anderen Elemente ja hunderte Varianten geben.
Ich möchte ungern jede Variante hard coden.

Xenu ist ein prima Ansatz.
Aber:
1) er findet die URL aus dem Beispiel auch nicht
2) die letzte Version ist auch schon aus 2010 (Stichwort HTML5)
3) es gibt keinen sourcecode

Kennt Jemand andere Tools?

Stefan
Mitglied: 134464
134464 Nov 05, 2017 updated at 09:51:21 (UTC)
Goto Top
Zitat von @StefanKittel:

Moin,

ja, dachte ich auch.
Aber das Beispiel oben enthält weder den Domänennamen noch http(s).
Ich müßte nach "url(" suchen. Und davon kann in Styles und anderen Elemente ja hunderte Varianten geben.
Ich möchte ungern jede Variante hard coden.
Musst du ja auch nicht, die Pfadbestandteile (Relativ/Absolut/mit oder ohne Protokoll Prefix) als Muster reichen ja.
Member: StefanKittel
StefanKittel Nov 05, 2017 at 10:05:38 (UTC)
Goto Top
Zitat von @134464:
Musst du ja auch nicht, die Pfadbestandteile (Relativ/Absolut/mit oder ohne Protokoll Prefix) als Muster reichen ja.
Aber ich die habe ich ja nicht.
Der Pfad aus dem Beispiel gehört zu Wordpress.
Für jedes CMS gibt es da eigene Muster. Ich hätte gerne etwas universelles.

Ich probiere gerade mit wget.
Das sieht vielversprechend aus.

Stefan
Mitglied: 134464
134464 Nov 05, 2017 updated at 11:30:32 (UTC)
Goto Top
Für jedes CMS gibt es da eigene Muster. Ich hätte gerne etwas universelles.
Ja nee, du weißt aber schon was Regex alles kann?? Einen universellen Regex kann man sich bauen, egal wie er aussieht welche Parameter verwendet werden usw., da spielt das CMS keine Rolle.
Es muss halt beachtet werden das rekursiv gearbeitet werden muss CSS und js können ja weitere Links enthalten.

Oder einfach Browsertools (F12) öffnen auf den Netzwerk-Tab gehen Seite laden und geladenen Elemente per Kontextmenü als JSON-Daten exportieren
Member: StefanKittel
StefanKittel Nov 05, 2017 at 11:46:04 (UTC)
Goto Top
Zitat von @134464:
Ja nee, du weißt aber schon was Regex alles kann?? Einen universellen Regex kann man sich bauen, egal wie er aussieht welche Parameter verwendet werden usw., da spielt das CMS keine Rolle.
Es muss halt beachtet werden das rekursiv gearbeitet werden muss CSS und js können ja weitere Links enthalten.
Und wo ist hier das Muster?
<div class="et_pb_slide et_pb_bg_layout_dark et_pb_media_alignment_center et_pb_slide_1" style='background-color:#ffffff;background-image:url(/wp-content/uploads/2016/07/bild1.jpg);'>

Ich kann weder "background-image" verwenden, da es hunderte Tags gibt noch "/wp-content/uploads/2016/07/bild1.jpg" da es ja nun gerade nicht Wordpress-Spezifisch sein darf noch ".jpg" da es vieleicht auch Dateien mit gif, bmp oder pcx gibt.

Oder einfach Browsertools (F12) öffnen auf den Netzwerk-Tab gehen Seite laden und geladenen Elemente per Kontextmenü als JSON-Daten exportieren
Genau so etwas suche ich was sich aber in der Shell oder PHP ausführen lässt.
Ich hatte gehofft DOMDocument könnte so etwas.

wget kann aber genau das. Es erkennt wirklich alle Spezialfälle die ich so bei meinen Test-Seiten gesehen habe.
Die Ausgabe ist nicht optimal, aber das zu parsen ist nicht so schwer.
Mitglied: 134464
134464 Nov 05, 2017 at 11:53:29 (UTC)
Goto Top
Zitat von @StefanKittel:
Und wo ist hier das Muster?
<div class="et_pb_slide et_pb_bg_layout_dark et_pb_media_alignment_center et_pb_slide_1" style='background-color:#ffffff;background-image:url(/wp-content/uploads/2016/07/bild1.jpg);'>

Ich kann weder "background-image" verwenden, da es hunderte Tags gibt noch "/wp-content/uploads/2016/07/bild1.jpg" da es ja nun gerade nicht Wordpress-Spezifisch sein darf noch ".jpg" da es vieleicht auch Dateien mit gif, bmp oder pcx gibt.
Der Pfad selber ist das Muster, natürlich nicht die Pfadangaben sondern der Aufbau selbst, Extensions sind egal deswegen gibts ja Regex face-smile
https://mathiasbynens.be/demo/url-regex
Member: eisbein
eisbein Nov 06, 2017 at 08:44:28 (UTC)
Goto Top
Guten Morgen!

Kann sein, dass ich noch etwas Kaffee benötige und noch nicht ganz wach bin um das Problem richtig zu verstehen, aber:

Was spricht gegen die Verwendung und die Anpassung von meta - base?

Gruß
eisbein