Scrapy Splash单击带有javascript href的链接

时间:2019-02-16 15:15:31

标签: python scrapy

我正在使用Scrapy Splash刮刮具有这样的元素的页面:

第1页,共349个

| 1个 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 下一个 ›

我想用文本“下一步”“单击”锚,并执行JavaScript以获取下一页。

这是我的刮板外观:

ansible_user: osadmin
ansible_password: password1
ansible_become_password: password2
[ some other values ]

Lua脚本不正确(我从一个不相关的示例复制了它)。我的问题是如何将所需的参数传递给Lua脚本,以便运行javascript?

1 个答案:

答案 0 :(得分:0)

您可以通过将值添加到SplashRequest的args中来将其他参数(docs)传递给Lua脚本:

javascript = "doSubmit('frmRow',1,0)"

yield SplashRequest(new_url, self.parse,
                    cookies={'store_language':'en'},
                    endpoint='execute',
                    args={'lua_source': self.script, 'javascript': javascript})

在Lua脚本中,您可以在args中获取值并使用runjs执行Javascript:

function main(splash, args)
    -- ...

    -- Get the argument here:
    local javascript = args.javascript

    -- Run the JS:
    assert(splash:runjs(javascript))

    return {
        html = splash:html()
    }
end