将表格从ScrapySplash Lua脚本传递到Python

问题描述 投票:0回答:1

我正在运行ScrapySplash,并且试图将在Lua中创建的表传递给Parse方法。如果我尝试访问该表,则出现类型错误,提示:“ SplashJsonResponse”对象不可下标”。

我的Lua脚本如下:

    script = '''
            function main(splash, args)
              assert(splash:go(args.url))
              assert(splash:wait(0.5))
              img = {}
              for i=1,5 do 
                table.insert(img, "Testing")
              end


              return {
                html = splash:html(),
                png = splash:png(),
                har = splash:har(),
                img,
              }
            end
    '''

然后我的解析方法就是:

    def parse_item(self, response):
        images = response['img']
        print (images)

但是,如上所述,这只会在行图像= response ['img']上给我一个错误,说'SplashJsonResponse'对象不可下标'。

任何人都不知道我将如何使用parse方法访问此Lua表中的值?

谢谢

python lua scrapy scrapy-splash
1个回答
0
投票

[好,我以某种方式解决了这个问题,但我不知道如何解决。基本上,我在lua语句中更改了return语句,如下所示:

    script = '''
            function main(splash, args)
              assert(splash:go(args.url))
              assert(splash:wait(0.5))
              img = {}
              for i=1,5 do 
                table.insert(img, "Testing")
              end


              return {
                html = splash:html(),
                png = splash:png(),
                har = splash:har(),
                img,
              }
            end
    '''

然后在我的解析方法中,我有以下内容:

    def parse(self, response):
        images = (response.data['a'])

现在,我有一个名为images的字典,并且可以通过images ['i']访问每个变量,尽管我不知道为什么这样做是可行的,但是我的原始方法却没有。如果有人了解原因,请随时发表评论并让我知道。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.