微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法使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 举报,一经查实,本站将立刻删除。