我正在运行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表中的值?
谢谢
[好,我以某种方式解决了这个问题,但我不知道如何解决。基本上,我在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']访问每个变量,尽管我不知道为什么这样做是可行的,但是我的原始方法却没有。如果有人了解原因,请随时发表评论并让我知道。谢谢