目錄
問題內容
解決方法
首頁 後端開發 Golang 如何透過網頁抓取存取動態 HTML 元素?

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

Feb 09, 2024 am 09:51 AM
html元素

如何通过网页抓取访问动态 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
使用 onclick 執行 PHP 函數 使用 onclick 執行 PHP 函數 Feb 29, 2024 pm 04:31 PM

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

html怎麼讀取excel數據 html怎麼讀取excel數據 Mar 27, 2024 pm 05:11 PM

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

JS中appendChild與append區別 JS中appendChild與append區別 Feb 20, 2024 pm 06:57 PM

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

使用CSS Transform進行元素的變換 使用CSS Transform進行元素的變換 Feb 24, 2024 am 10:09 AM

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

dreamweaver換行符號是什麼 dreamweaver換行符號是什麼 Apr 08, 2024 pm 09:54 PM

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

ridge在css中是什麼意思 ridge在css中是什麼意思 Apr 28, 2024 pm 04:06 PM

ridge是CSS中的邊框樣式,用於創建具有浮雕效果的3D邊框,具體表現為一條凸起的山脊狀線條。

jQuery實作判斷元素內是否存在子元素的簡單方法 jQuery實作判斷元素內是否存在子元素的簡單方法 Feb 28, 2024 pm 03:21 PM

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

csshover怎麼使用 csshover怎麼使用 Feb 23, 2024 pm 12:06 PM

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

See all articles