Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengakses elemen HTML dinamik melalui pengikisan web?
editor php Xiaoxin berada di sini untuk memperkenalkan kaedah untuk mengakses elemen HTML dinamik melalui rangkak web. Apabila kami merangkak halaman web, kadangkala kami menemui kandungan yang dijana secara dinamik yang tidak boleh diperoleh secara langsung sehingga halaman web dimuatkan. Nasib baik, terdapat alat dan teknik yang boleh kita gunakan untuk menyelesaikan masalah ini. Artikel ini akan memperkenalkan kaedah berasaskan PHP yang boleh digunakan untuk merangkak dan mengakses elemen HTML dinamik dengan mudah. Mari lihat!
Saya menggunakan go-rod untuk mengikis web. Saya mahu mengakses pautan dalam suapan 3499910bf9dac5ae3c52d5ede7383485
.
Untuk membuat ini a
可见,我必须完成一个搜索器,它是一个 input
,具有下一个格式(没有 submit
):
<form> <input> <!--this is the searcher--> <form/>
Jadi apabila saya selesai, inilah yang saya mahu akses a
:
Sampai sini, semuanya baik-baik saja. Ini adalah kod yang saya gunakan untuk melengkapkan pencari:
//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")
Sekarang masalah timbul apabila saya ingin klik pada a
yang muncul selepas selesai carian.
Saya mencuba ini:
diviwant := page.mustelement("aselector...") diviwant.mustclick()
Dan ini:
diviwant := page.mustelement("aselector...").mustwaitvisible() diviwant.mustclick()
Walau bagaimanapun, mereka semua membalas saya kesilapan yang sama:
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
Jadi, semasa mencari beberapa penyelesaian, saya menemui isu github ini dan mencuba kaedah ini untuk mendapatkan pautan:
link := page.musteval(`()=> document.queryselector('aselector...').href`)
Tetapi ia mengembalikan ini:
panic: eval js error: TypeError: Cannot read properties of null (reading 'href')
Namun, saya agak pasti pemilihnya betul. Apa yang saya buat salah?
Seperti yang dikatakan @hymns for disco dalam komen, saya hanya perlu menunggu sebentar selepas pencari selesai.
el.MustInput("Lionel Messi") time.Sleep(time.Second) link := page.MustEval(`()=> document.querySelector('aSelector...').href`)
Atas ialah kandungan terperinci Bagaimana untuk mengakses elemen HTML dinamik melalui pengikisan web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!