无法使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

On the image you can see the elements I am looking for

我试过了:

替换:

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 错误,这可能是由于网站试图停止抓取工具。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)