Frage von Johann0604, 13

Website Quellcode mit bash auslesen?

Ich möchte mit einem bash-script den Quellcode einer Website auslesen, sodass ich als Ausgabe einen einzelnen Link (nur den Link) bekomme. Das Problem: der Link steht nicht allein in der Zeile Quellcode; sonst ginge ja einfach:

wget <a href="https://beliebige.website.de/">https://beliebige.website.de/</a> -O Datei.txt
grep [Link] Datei.txt

Leider wird dabei die ganze Zeile Quellcode ausgegeben. Wie kann ich nur einen speziellen Suchbegriff als Ausgabe bekommen? Möglich wäre auch, anzugeben, die wievielten Zeichen der Zeile (z.B. Zeichen 11-20) ausgegeben werden sollen.

Wie bewerkstellige ich das?

Antwort
von TeeTier, 5

Der "o" Schalter vom grep Kommando liefert dir "nur" den aktuellen Treffer, und nicht die Zeile.

Da grep aber keine Gruppen unterstützt, kannst du auch - falls du komplexere Dinge verarbeiten musst - zwei grep-Kommandos hintereinander hängen:

wget -qO- 'website.tld/pfad/datei.ext' | grep -oiP 'href="https?://[^"]+"' | grep -oiP 'https?://[^"]+'

Das "O-" leitet die heruntergeladene Datei auf die Standardausgabe um, also brauchst du keine temporäre Datei mehr. "-q" sagt wget einfach nur, dass du keine weiteren Ausgaben wünschst.

Das erste grep liefert alle href-Attribute, die eine absolute URL beginnend mit "http" oder "https" enthalten. Das zweite grep extrahiert den reinen Link.

(Falls du keine mächtigen Perl Regexen benötigst, kannst du auch auf die "-P" Option verzichten, und statt mehrere grep Kommandos durch Pipe, lieber mehrere Regexen durch "-e" verbinden!)

Viel Spaß! :)

Antwort
von nocheinnick, 2

Ich würde es mit Stringoperatoren machen. Findest du hier:

http://tldp.org/LDP/abs/html/string-manipulation.html

entweder unter substring removal (mit Suchmuster wie "http:...") oder substring extraction (mit Positionsangaben).

Antwort
von MinerBozz, 7

Ich verstehe deinen Satzbau in der Frage nicht recht. Im Titel sagst du was von Quellcode und in der Frage selbst, dass du nur den link haben möchtest... Was denn nun?

Kommentar von Johann0604 ,

Ich möchte nur den Link.
Ich gehe aber davon aus, dass man dazu den Quellcode braucht, oder nicht?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten