Heim >Backend-Entwicklung >Golang >Wie greife ich über Web Scraping auf dynamische HTML-Elemente zu?
php-Editor Xiaoxin ist hier, um eine Methode für den Zugriff auf dynamische HTML-Elemente durch Web-Crawling vorzustellen. Beim Crawlen von Webseiten stoßen wir manchmal auf dynamisch generierte Inhalte, die erst beim Laden der Webseite direkt abgerufen werden können. Glücklicherweise gibt es Tools und Techniken, mit denen wir dieses Problem lösen können. In diesem Artikel wird eine PHP-basierte Methode vorgestellt, mit der dynamische HTML-Elemente einfach gecrawlt und darauf zugegriffen werden kann. Lass uns einen Blick darauf werfen!
Ich verwende Go-Rod zum Web-Scraping. Ich möchte auf Links im Feed zugreifen 3499910bf9dac5ae3c52d5ede7383485
.
Um dies zu machen a
可见,我必须完成一个搜索器,它是一个 input
,具有下一个格式(没有 submit
):
<form> <input> <!--this is the searcher--> <form/>
Wenn ich also fertig bin, möchte ich auf Folgendes zugreifen a
:
Bis hierher ist alles in Ordnung. Dies ist der Code, den ich zum Vervollständigen der Suche verwendet habe:
//page's url page := rod.new().mustconnect().mustpage("https://www.sofascore.com/") //acept cookies alert page.mustelement("cookiesalertselector...").mustclick() //completes the searcher el := page.mustelement(`searcherselector...`) el.mustinput("lionel messi")
Jetzt tritt das Problem auf, wenn ich auf das a
klicken möchte, das nach Abschluss der Suche erscheint.
Ich habe Folgendes versucht:
diviwant := page.mustelement("aselector...") diviwant.mustclick()
Und das:
diviwant := page.mustelement("aselector...").mustwaitvisible() diviwant.mustclick()
Allerdings erhalte ich bei allen den gleichen Fehler:
panic: {-32000 node is detached from document } goroutine 1 [running]: github.com/go-rod/rod/lib/utils.glob..func2({0x100742dc0?, 0x140002bad50?}) /users/lucastomicbenitez/go/pkg/mod/github.com/go-rod/[email protected]/lib/utils/utils.go:65 +0x24 github.com/go-rod/rod.gene.func1({0x14000281ca0?, 0x1003a98b7?, 0x4?}) /users/lucastomicbenitez/go/pkg/mod/github.com/go-rod/[email protected]/must.go:36 +0x64 github.com/go-rod/rod.(*element).mustclick(0x14000289320) /users/lucastomicbenitez/go/pkg/mod/github.com/go-rod/[email protected]/must.go:729 +0x9c main.main() /users/lucastomicbenitez/development/golang/evolutionaryalgorithm/main/main.go:22 +0x9c exit status 2
Auf der Suche nach Lösungen bin ich auf dieses Github-Problem gestoßen und habe versucht, den Link über diese Methode zu erhalten:
link := page.musteval(`()=> document.queryselector('aselector...').href`)
Aber es gibt Folgendes zurück:
panic: eval js error: TypeError: Cannot read properties of null (reading 'href')
Ich bin mir jedoch ziemlich sicher, dass der Selektor korrekt ist. Was habe ich falsch gemacht?
Wie @hymns for disco in den Kommentaren sagte, musste ich einfach eine Weile warten, nachdem die Suche beendet war.
el.MustInput("Lionel Messi") time.Sleep(time.Second) link := page.MustEval(`()=> document.querySelector('aSelector...').href`)
Das obige ist der detaillierte Inhalt vonWie greife ich über Web Scraping auf dynamische HTML-Elemente zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!