如何通过网页抓取访问动态 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脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

html读取excel数据的方法:1、使用JavaScript库读取Excel数据;2、使用服务器端编程语言读取Excel数据。

JS中appendChild与append区别,需要具体代码示例在JavaScript中,当我们需要动态地向DOM(文档对象模型)中添加子元素时,我们通常使用appendChild和append这两个方法。虽然它们的目的都是为了向父元素中添加子元素,但在使用上却有一些区别。一、appendChild方法appendChild方法是DOM节点对象的方法之一,用

我们还将介绍另一种使用Jquery库通过onclick()事件执行PHP函数的方法。该方法调用一个javascript函数,该函数将在网页中输出php函数的内容。我们还将演示另一种使用onclick()事件执行PHP函数的方法,使用纯JavaScript调用PHP函数。本文将介绍一种执行PHP函数的方法,使用GET方法发送URL中的数据,并使用isset()函数检查GET数据。如果设置了数据并执行该函数,则此方法调用PHP函数。使用jQuery通过onclick()事件执行PHP函数我们可以使用

Dreamweaver中使用<br>标签创建换行,通过菜单、快捷键或直接键入插入。可结合CSS样式创建特定高度空行。在某些情况下,使用<p>标签替代<br>标签更合适,因为它可自动创建段落间空行并应用样式控制。

CSS中Transform的用法CSS的Transform属性是一种非常强大的工具,可以对HTML元素进行平移、旋转、缩放和倾斜等操作。它可以极大地改变元素的外观,使网页更富有创意和动感。在本文中,我们将详细介绍Transform的各种用法,并提供具体的代码示例。一、平移(Translate)平移是指将元素沿着x轴和y轴移动指定的距离。它的语法如下:tran

CSS中的hover伪类是一个非常常用的选择器,它允许我们在鼠标悬停在元素上时改变其样式。本文将为大家介绍hover的用法,并提供具体的代码示例。一、基本用法要使用hover,我们需要先为该元素定义一个样式,然后使用:hover伪类来制定鼠标悬停时对应的样式。例如,我们有一个button元素,当鼠标悬停在按钮上时,我们希望按钮的背景色变为红色,文字颜色变为白

HTML和CSS文件的连接对于网页的外观和用户体验至关重要。本文详细介绍了HTML文件与CSS文件的连接方式,包括内联样式、内部样式表和外部样式表。通过理解这些方式和相关的注意事项,开发者可以有效地实现网页的样式和布局。
