如何透過網頁抓取存取動態 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 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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

我們也將介紹另一種使用Jquery函式庫透過onclick()事件執行PHP函數的方法。此方法呼叫一個javascript函數,該函數將在網頁中輸出php函數的內容。我們也會示範另一種使用onclick()事件執行PHP函數的方法,使用純JavaScript呼叫PHP函數。本文將介紹一種執行PHP函數的方法,使用GET方法傳送URL中的數據,並使用isset()函數檢查GET數據。如果設定了資料並執行函數,則此方法呼叫PHP函數。使用jQuery透過onclick()事件執行PHP函數我們可以使用

html讀取excel資料的方法:1.使用JavaScript庫讀取Excel資料;2、使用伺服器端程式語言讀取Excel資料。

JS中appendChild與append區別,需要具體程式碼範例在JavaScript中,當我們需要動態地向DOM(文檔物件模型)中新增子元素時,我們通常會使用appendChild和append這兩個方法。雖然它們的目的都是為了在父元素中添加子元素,但在使用上卻有一些區別。一、appendChild方法appendChild方法是DOM節點物件的方法之一,用

CSS中Transform的用法CSS的Transform屬性是一種非常強大的工具,可以對HTML元素進行平移、旋轉、縮放和傾斜等操作。它可以大大改變元素的外觀,使網頁更有創意和動態。在本文中,我們將詳細介紹Transform的各種用法,並提供具體的程式碼範例。一、平移(Translate)平移是指將元素沿著x軸和y軸移動指定的距離。它的語法如下:tran

Dreamweaver中使用<br>標籤建立換行,透過選單、快速鍵或直接鍵入插入。可結合CSS樣式建立特定高度空白行。在某些情況下,使用<p>標籤替代<br>標籤更合適,因為它可自動建立段落間空白行並套用樣式控制。

jQuery是一個廣泛使用的JavaScript函式庫,它提供了許多方便的方法來操作HTML元素。在開發網頁的過程中,常常會遇到需要判斷一個元素內是否存在子元素的情況。在本文中,我們將介紹如何使用jQuery實作這個功能,並提供具體的程式碼範例。要判斷一個元素內是否存在子元素,我們可以使用jQuery的children()方法。 children()方法用於取得匹配

CSS中的hover偽類是一個非常常用的選擇器,它允許我們在滑鼠懸停在元素上時改變其樣式。本文將為大家介紹hover的用法,並提供具體的程式碼範例。一、基本用法要使用hover,我們需要先為該元素定義一個樣式,然後再使用:hover偽類來製定滑鼠懸停時對應的樣式。例如,我們有一個button元素,當滑鼠懸停在按鈕上時,我們希望按鈕的背景色變為紅色,文字顏色變為白
