Wie exportiere ich alle Hyperlinks auf einer Webseite?

622
user598527

Ich brauche eine Lösung, die alle Hyperlinks auf einer Webseite zu exportieren (auf einer Webseite, nicht von gesamter Website) und eine Möglichkeit, die Links zu spezifizieren wir exportieren möchten, nur als Beispiel Hyperlinks beginnend mit https://superuser.com/questions/ ohne alles andere.
Beim Exportieren als bevorzugte Textdatei sollten die Ergebnisse untereinander angezeigt werden, eine URL pro Zeile:

https://superuser.com/questions/1  https://superuser.com/questions/2  https://superuser.com/questions/3 [...] 
0
@JeffZeitlin: Ich habe "Invoke-WebRequest" in Powershell 5 ausprobiert. Ich verwende sowohl Windows als auch Linux, wobei die native Terminal / Powershell-Methode bevorzugt wird. user598527 vor 7 Jahren 0
Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 7 Jahren 1
Wenn Invoke-WebRequest den HTML-Code für die gewünschte Seite nicht zurückgibt, müssen Sie zunächst eine Problembehandlung durchführen. Wenn Ihr Invoke-WebRequest erfolgreich ist, sollten Sie in der Lage sein, den resultierenden HTML-Code zu analysieren, um das zu extrahieren, was Sie möchten. Erwarten Sie nicht, dass wir das Skript für Sie schreiben, wie DavidPostill angibt. Sie müssen "Ihre Arbeit zeigen". Jeff Zeitlin vor 7 Jahren 1

2 Antworten auf die Frage

2
iBug

Wenn Sie auf einem Linux- oder Unix-System (wie FreeBSD oder macOS) laufen, können Sie eine Terminalsitzung öffnen und den folgenden Befehl ausführen:

wget -O - http://example.com/webpage.htm | \ sed 's / href = / \ nhref = / g' | \ grep href = \ "http://specify.com | \ sed 's /.* href = "// g; s /".*// g'> out.txt

In der Regel können sich mehrere <a href>Tags in einer Zeile befinden. Sie müssen also zuerst die Tags ausschneiden (das erste sedfügt vor jedem Keyword Zeilenumbrüche hinzu href, um sicherzustellen, dass in einer Zeile nicht mehr als eines davon steht).
Um Links von mehreren ähnlichen Seiten zu extrahieren, z. B. alle Fragen auf den ersten 10 Seiten dieser Website, verwenden Sie eine forSchleife.

für i in $ (seq 1 10); tun wget -O - http://superuser.com/questions?page=$i | \ sed 's / href = / \ nhref = / g' | \ grep -E 'href = "http://superuser.com/questions/[0-9]" | \ sed 's /.* href = "// g; s /".*// g' >> out.txt erledigt

Erinnern Sie sich, durch http://example.com/webpage.htmIhre tatsächliche Seiten-URL und http://specify.comden vorhergehenden String, den Sie angeben möchten, zu ersetzen .
Sie können nicht nur eine vorangehende Zeichenfolge für die zu exportierende URL angeben, sondern auch ein Muster für reguläre Ausdrücke, wenn Sie egrepoder grep -Ein dem oben angegebenen Befehl verwenden.
Wenn Sie mit Windows arbeiten, sollten Sie Cygwin in Betracht ziehen . Vergessen Sie nicht, Pakete auszuwählen Wget, grepund sed.

Dies ist fast die Methode, die ich für den Batch-Download von Musik von [KHInsider] (http://downloads.khinsider.com) verwende, ohne ihren VIP-Service zu kaufen. Extrahieren Sie die Links einfach manuell und platzieren Sie sie in einem Download-Manager wie [IDM] (https://www.internetdownloadmanager.com). iBug vor 7 Jahren 0
0
Yisroel Tech

Wenn Sie damit einverstanden sind, Firefox zu verwenden, können Sie das Addon Snap Links Plus hinzufügen

  1. Halten Sie die rechte Maustaste gedrückt und ziehen Sie eine Auswahl um die Links.

  2. Wenn sie markiert sind, halten Sie die Strg-Taste gedrückt, während Sie die rechte Maustaste loslassen.

Würde aufgrund der Auswahlmethode nicht gut funktionieren, kann die Quellenseite hunderte von Seiten umfassen. user598527 vor 7 Jahren 0
Daher funktioniert eigentlich keine auf einer Seite basierende Methode nicht, da "Quellenseite" (https://superuser.com/questions/) nur eine Seite ist und Sie möchten, dass sie von allen "Hunderten von Seiten" (wie https) gespeichert wird : //superuser.com/questions? page = 2) Yisroel Tech vor 7 Jahren 0
Diese Seite war nur ein Beispiel. user598527 vor 7 Jahren 0
Aber was meinen Sie damit "Hunderte von Seiten"? Wenn Sie etwas drücken müssen, um weitere Seiten zu laden, ist dies nicht wirklich eine Seite. Yisroel Tech vor 7 Jahren 0
"Ungefähr", zum Beispiel ist diese Seite so lang (obwohl sie keine Hyperlinks hat, die wegen der geringen Größe als Beispiel verwendet werden): https://easylist-downloads.adblockplus.org/easylist.txt Es gibt weitere Websites, die ich Vielleicht möchten Sie Links von exportieren. user598527 vor 7 Jahren 0
Oh, ich habe dich. Diese Erweiterung für CXhrome scheint die Aufgabe zu erfüllen: https://chrome.google.com/webstore/detail/link-klipper-extract-all/fahollcgofmpnehocdgofnhkkchiekoo?hl=de Yisroel Tech vor 7 Jahren 1