docker - Lua 错误:'null 不是对象(评估 \'document.querySelector...).click\')'
问题描述
我正在抓取https://www.tayara.tn/sc/immobilier/appartements,我需要单击“加载更多”按钮,所以我使用了这个 Lua 脚本:
function main(splash, args)
assert(splash:go(args.url))
assert(splash:wait(0.5))
assert(splash:runjs('document.querySelector(".DbXTC b7ygi _1JgR4 _1U08s button").click()'))
splash:set_viewport_full()
return {
html = splash:html(),
png = splash:png(),
har = splash:har(),
}
end
单击“渲染”按钮后,出现此错误:
{
"description": "Error happened while executing Lua script",
"type": "ScriptError",
"info": {
"line_number": 4,
"type": "LUA_ERROR",
"error": "JS error: 'TypeError: null is not an object (evaluating \\'document.querySelector(\".DbXTC b7ygi _1JgR4 _1U08s button\").click\\')'",
"message": "Lua error: [string \"function main(splash, args)\r...\"]:4: JS error: 'TypeError: null is not an object (evaluating \\'document.querySelector(\".DbXTC b7ygi _1JgR4 _1U08s button\").click\\')'",
"source": "[string \"function main(splash, args)\r...\"]"
},
"error": 400
}
我做错了什么?
解决方案
这听起来像document.querySelector(".DbXTC b7ygi _1JgR4 _1U08s button")
返回null
,在这种情况下,您正在调用click
方法 on null
。.DbXTC b7ygi _1JgR4 _1U08s
没有意义:它将<button>
标签内的标签内的标签<_1U08s>
内的<_1JgR4>
标签内的<b7ygi>
标签内的标签与 class匹配DbXTC
。没有这样的元素,所以document.querySelector
返回null
。document.querySelector(".DbXTC button")
似乎工作。
推荐阅读
- r - 用ggplot连接极坐标图中的起点和终点,保持观察的位置
- angular - Angular中有没有办法使用延迟加载的编译模块
- reactjs - 弹出框上的自动对焦功能
- php - 如何使用 Telegram Bot API 获取超级群聊中用户的加入日期?PHP
- c# - 在 function.json 中参数化 runOnStartup
- php - 在 Yajra 数据表中找不到 DT_Row_Index
- reactjs - 如何在 ReactJS 中突出显示树中的焦点节点?
- r - 删除在数据框中列的行中以文本字符串中的单词写入的数字
- bash - 使用 set -e 解决程序退出状态的一般解决方案
- javascript - 如果请求者接收到数据,如何跟踪来自节点的发布请求