First Commit
This commit is contained in:
commit
4f394e3925
4 changed files with 148 additions and 0 deletions
77
README.md
Normal file
77
README.md
Normal file
|
@ -0,0 +1,77 @@
|
|||
# iFrame Link Extractor
|
||||
|
||||
## Beschreibung
|
||||
|
||||
Dieses Go-Programm verwendet die go-rod Bibliothek, um den Inhalt von verschachtelten iFrames auf einer Webseite zu extrahieren und alle darin enthaltenen HTTPS-Links zu identifizieren und auszugeben. Es ist besonders nützlich für Webseiten mit komplexen iFrame-Strukturen, bei denen der Zugriff auf den Inhalt tiefer verschachtelter iFrames erforderlich ist.
|
||||
|
||||
## Funktionen
|
||||
|
||||
- Navigiert zu einer angegebenen URL
|
||||
- Wartet auf das Laden der Hauptseite
|
||||
- Findet und wechselt in den Kontext eines äußeren iFrames
|
||||
- Findet und wechselt in den Kontext eines inneren iFrames innerhalb des äußeren iFrames
|
||||
- Extrahiert den Textinhalt des inneren iFrames
|
||||
- Identifiziert alle HTTPS-Links im extrahierten Text
|
||||
- Gibt die gefundenen Links aus
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Go 1.16 oder höher
|
||||
- go-rod Bibliothek
|
||||
|
||||
## Installation
|
||||
|
||||
1. Stellen Sie sicher, dass Go auf Ihrem System installiert ist.
|
||||
|
||||
2. Klonen Sie das Repository:
|
||||
```
|
||||
git clone https://github.com/yourusername/iframe-link-extractor.git
|
||||
cd iframe-link-extractor
|
||||
```
|
||||
|
||||
3. Installieren Sie die erforderlichen Abhängigkeiten:
|
||||
```
|
||||
go mod tidy
|
||||
```
|
||||
|
||||
## Verwendung
|
||||
|
||||
1. Öffnen Sie die `main.go` Datei und passen Sie die URL und iFrame-Selektoren an Ihre Zielwebseite an.
|
||||
|
||||
2. Führen Sie das Programm aus:
|
||||
```
|
||||
go run main.go
|
||||
```
|
||||
|
||||
3. Das Programm wird die gefundenen HTTPS-Links in der Konsole ausgeben.
|
||||
|
||||
## Anpassung
|
||||
|
||||
- Um auf spezifische Elemente innerhalb der iFrames zu warten, können Sie zusätzliche `MustElement().MustWaitVisible()` Aufrufe hinzufügen.
|
||||
- Der reguläre Ausdruck für die Link-Erkennung kann angepasst werden, um spezifischere URL-Muster zu erfassen.
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
- Wenn Sie Probleme mit Timeouts haben, erhöhen Sie die Wartezeiten mit `page.Timeout()` oder `MustElement().WaitVisible()`.
|
||||
- Bei Problemen mit dem Zugriff auf iFrames aufgrund von Sicherheitseinstellungen, erwägen Sie die Verwendung zusätzlicher Browser-Optionen wie im Kommentar im Code beschrieben.
|
||||
|
||||
## Beitrag
|
||||
|
||||
Beiträge zum Projekt sind willkommen. Bitte öffnen Sie ein Issue oder einen Pull Request für Vorschläge oder Verbesserungen.
|
||||
|
||||
## Lizenz
|
||||
|
||||
[Fügen Sie hier Ihre gewählte Lizenz ein, z.B. MIT, GPL, etc.]
|
||||
```
|
||||
|
||||
Diese README.md bietet eine umfassende Übersicht über Ihr Projekt und enthält Abschnitte für:
|
||||
|
||||
1. Eine kurze Beschreibung des Projekts
|
||||
2. Die Hauptfunktionen
|
||||
3. Voraussetzungen für die Nutzung
|
||||
4. Installationsanweisungen
|
||||
5. Verwendungshinweise
|
||||
6. Anpassungsmöglichkeiten
|
||||
7. Tipps zur Fehlerbehebung
|
||||
8. Informationen zum Beitragen zum Projekt
|
||||
9. Einen Platzhalter für die Lizenz
|
13
go.mod
Executable file
13
go.mod
Executable file
|
@ -0,0 +1,13 @@
|
|||
module scraper-go
|
||||
|
||||
go 1.19
|
||||
|
||||
require github.com/go-rod/rod v0.116.2
|
||||
|
||||
require (
|
||||
github.com/ysmood/fetchup v0.2.3 // indirect
|
||||
github.com/ysmood/goob v0.4.0 // indirect
|
||||
github.com/ysmood/got v0.40.0 // indirect
|
||||
github.com/ysmood/gson v0.7.3 // indirect
|
||||
github.com/ysmood/leakless v0.9.0 // indirect
|
||||
)
|
15
go.sum
Executable file
15
go.sum
Executable file
|
@ -0,0 +1,15 @@
|
|||
github.com/go-rod/rod v0.116.2 h1:A5t2Ky2A+5eD/ZJQr1EfsQSe5rms5Xof/qj296e+ZqA=
|
||||
github.com/go-rod/rod v0.116.2/go.mod h1:H+CMO9SCNc2TJ2WfrG+pKhITz57uGNYU43qYHh438Mg=
|
||||
github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
|
||||
github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
|
||||
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
|
||||
github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
|
||||
github.com/ysmood/gop v0.2.0 h1:+tFrG0TWPxT6p9ZaZs+VY+opCvHU8/3Fk6BaNv6kqKg=
|
||||
github.com/ysmood/got v0.40.0 h1:ZQk1B55zIvS7zflRrkGfPDrPG3d7+JOza1ZkNxcc74Q=
|
||||
github.com/ysmood/got v0.40.0/go.mod h1:W7DdpuX6skL3NszLmAsC5hT7JAhuLZhByVzHTq874Qg=
|
||||
github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY=
|
||||
github.com/ysmood/gotrace v0.6.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM=
|
||||
github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE=
|
||||
github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg=
|
||||
github.com/ysmood/leakless v0.9.0 h1:qxCG5VirSBvmi3uynXFkcnLMzkphdh3xx5FtrORwDCU=
|
||||
github.com/ysmood/leakless v0.9.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ=
|
43
scraper.go
Normal file
43
scraper.go
Normal file
|
@ -0,0 +1,43 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"github.com/go-rod/rod"
|
||||
)
|
||||
|
||||
func main() {
|
||||
browser := rod.New().MustConnect()
|
||||
defer browser.MustClose()
|
||||
|
||||
page := browser.MustPage("https://pad.stratum0.org/p/dc") // URL der Hauptseite
|
||||
page.MustWaitLoad()
|
||||
|
||||
// Finden Sie das erste iFrame-Element
|
||||
outerIframeElement := page.MustElement("#editorcontainer > iframe:nth-child(1)") // Passen Sie den Selektor an
|
||||
|
||||
// Wechseln Sie zum Kontext des ersten iFrames
|
||||
outerFrame := outerIframeElement.MustFrame()
|
||||
|
||||
// Warten Sie, bis der Inhalt des ersten iFrames geladen ist
|
||||
outerFrame.MustWaitLoad()
|
||||
|
||||
// Finden Sie das zweite iFrame-Element innerhalb des ersten iFrames
|
||||
innerIframeElement := outerFrame.MustElement("#outerdocbody > iframe:nth-child(1)") // Passen Sie den Selektor an
|
||||
|
||||
// Wechseln Sie zum Kontext des zweiten iFrames
|
||||
innerFrame := innerIframeElement.MustFrame()
|
||||
innerFrame.MustWaitLoad()
|
||||
|
||||
// Extrahieren Sie den Text aus dem zweiten iFrame (Benutze statt #innderdocbody auch body für jedes Element)
|
||||
text := innerFrame.MustElement("#innerdocbody").MustText()
|
||||
|
||||
// Regex zum Finden von Links, die mit https beginnen
|
||||
re := regexp.MustCompile(`https://[\w\.-]+(?:/[\w\.-]*)*`)
|
||||
httpsLinks := re.FindAllString(text, -1)
|
||||
|
||||
fmt.Println("Gefundene https-Links:")
|
||||
for _, link := range httpsLinks {
|
||||
fmt.Println(link)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue