php小編小新在這裡為大家介紹一個方法,可以透過網頁抓取來存取動態HTML元素。當我們在進行網頁抓取時,有時會遇到一些動態產生的內容,這些內容在網頁載入完成之前無法直接取得。幸運的是,我們可以利用一些工具和技術來解決這個問題。本文將介紹一種基於PHP的方法,使用它可以輕鬆地抓取存取動態HTML元素。讓我們一起來看看吧!
我正在使用 go-rod 進行網頁抓取。我想訪問動態 3499910bf9dac5ae3c52d5ede7383485
內的連結。
為了讓這個 a
可見,我必須完成一個搜尋器,它是一個 input
,具有下一個格式(沒有 submit
):
<form> <input> <!--this is the searcher--> <form/>
所以,當我完成後,出現我要訪問的a
:
到這裡,一切都還好。這是我用來完成搜尋器的程式碼:
//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")
現在問題出現了,當我想點擊完成搜尋後顯示的a
。
我嘗試過這個:
diviwant := page.mustelement("aselector...") diviwant.mustclick()
還有這個:
diviwant := page.mustelement("aselector...").mustwaitvisible() diviwant.mustclick()
但是,它們都回傳給我相同的錯誤:
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
所以,在尋找一些解決方案時,我發現了這個 github 問題並嘗試透過此方法獲取連結:
link := page.musteval(`()=> document.queryselector('aselector...').href`)
但它回傳這個:
panic: eval js error: TypeError: Cannot read properties of null (reading 'href')
但是,我很確定選擇器是正確的。 我做錯了什麼?
正如@hymns for disco在評論中所說,我只需要在搜尋器完成後等待一段時間。
el.MustInput("Lionel Messi") time.Sleep(time.Second) link := page.MustEval(`()=> document.querySelector('aSelector...').href`)
以上是如何透過網頁抓取存取動態 HTML 元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!