Lua错误:“ null不是对象(正在评估\'document.querySelector ...)。click \')'

时间:2019-01-25 18:06:15

标签: docker web-scraping lua scrapy-splash

我正在抓取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
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

听起来document.querySelector(".DbXTC b7ygi _1JgR4 _1U08s button")返回null,在这种情况下,您正在click上调用null方法。 .DbXTC b7ygi _1JgR4 _1U08s毫无意义:它与标签{类中的<button>标签中的<_1U08s>标签中的<_1JgR4>标签中的<b7ygi>标签相匹配{1}}。没有这样的元素,因此DbXTC返回document.querySelectornull似乎有用。