无法在 scrapy-splash 中创建 Lua 脚本获取页数并在页面上单击按钮

我正在尝试做什么

我试图在 https://www.contour.bg/myzhe 上爬取所有产品,为此我需要多次单击下一页按钮。

因此,我想从页面中获取页数,并通过循环单击下一页按钮直到需要的次数。

我正在使用通过 Docker 容器的 scrapy-splash。

问题

目前我的脚本长这样,点击次数是硬编码的,而且按钮点击不起作用(同一页被爬取了 10 次):

function main(splash, args)
  assert(splash:go(args.url))
  assert(splash:wait(0.5))
  treat=require('treat')
  result= {}
  for i=1,10,1
  do
    assert(splash:runjs('document.querySelector(".page-link.next").click()'))
    result[i]=splash:html()
  end
  return treat.as_array(result)
end

您可以在图像上看到我正在寻找的元素

我尝试过:

替换:

assert(splash:runjs('document.querySelector(".page-link.next").click()'))

button = splash:select('.page-link.next')
button:mouse_click()

但是得到了相同的结果。

我还尝试了 Darius 的建议

添加等待时间并在 '.page-link.next' 前面添加 'a'。

assert(splash:runjs('document.querySelector("a.page-link.next").click()'))
assert(splash:wait(5))
result[i]=splash:html()

像这样,在 Docker 容器中测试时,页面实际上正在更改并且内容正确显示出来,但是在使用 scrapy 执行时我收到了 504 错误,这可能是由于网站尝试停止爬虫造成的。

点赞