首页 > 后端开发 > Golang > 正文

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

王林
发布: 2024-02-09 09:51:17
转载
549人浏览过

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

php小编小新在这里为大家介绍一种方法,可以通过网页抓取访问动态HTML元素。当我们在进行网页抓取时,有时会遇到一些动态生成的内容,这些内容在网页加载完成之前无法直接获取。幸运的是,我们可以利用一些工具和技术来解决这个问题。本文将介绍一种基于PHP的方法,使用它可以轻松地抓取访问动态HTML元素。让我们一起来看看吧!

问题内容

我正在使用 go-rod 进行网页抓取。我想访问动态 内的链接。 为了使这个 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中文网其它相关文章!

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号