首頁 > 後端開發 > Golang > 主體

如何透過網頁抓取存取動態 HTML 元素?

王林
發布: 2024-02-09 09:51:17
轉載
337 人瀏覽過

如何通过网页抓取访问动态 HTML 元素?

php小編小新在這裡為大家介紹一個方法,可以透過網頁抓取來存取動態HTML元素。當我們在進行網頁抓取時,有時會遇到一些動態產生的內容,這些內容在網頁載入完成之前無法直接取得。幸運的是,我們可以利用一些工具和技術來解決這個問題。本文將介紹一種基於PHP的方法,使用它可以輕鬆地抓取存取動態HTML元素。讓我們一起來看看吧!

問題內容

我正在使用 go-rod 進行網頁抓取。我想訪問動態 <a> 內的連結。 為了讓這個 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&#160;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&#160;protected]/must.go:36
+0x64 github.com/go-rod/rod.(*element).mustclick(0x14000289320)   /users/lucastomicbenitez/go/pkg/mod/github.com/go-rod/[email&#160;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中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!