如何使用Splash处理新的标签页?

时间:2018-03-21 18:24:11

标签: scrapy-splash splash-js-render

我正在抓取一个非常恼人的链接(<a> HTML标记)的网站 - 它会在点击时打开小弹出窗体,提交后会打开新的浏览器标签(并将焦点切换到它)使用我需要的URL,并将旧标签重定向到另一个页面。

成功提交弹出窗口非常简单,但我不知道如何获取此新标签的网址。

正如文档所说,Splash只能使用一个标签,所以不可能这样做吗?

1 个答案:

答案 0 :(得分:0)

作为Splash的comments开发人员this GitHub issue,此功能尚未实施。

但是我在同一个问题上发布了my solution来解决这个问题。 例如:

function main(splash, args)

  assert(splash:go(args.url))  -- execute JS code below only after loading the page

  splash:runjs("var newTabURL")
  splash:runjs("newTabURL = null")  -- sometimes JS can't find variable without this line
  splash:runjs("window.open = function(url){newTabURL = url}")

  -- actions which open the new tab

  local new_tab_url  = splash:evaljs("newTabURL")

  -- other actions
end