我正在抓取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
}
我做错了什么?
答案 0 :(得分:0)
听起来document.querySelector(".DbXTC b7ygi _1JgR4 _1U08s button")
返回null
,在这种情况下,您正在click
上调用null
方法。 .DbXTC b7ygi _1JgR4 _1U08s
毫无意义:它与标签{类中的<button>
标签中的<_1U08s>
标签中的<_1JgR4>
标签中的<b7ygi>
标签相匹配{1}}。没有这样的元素,因此DbXTC
返回document.querySelector
。 null
似乎有用。