Передача таблицы из ScriptSpla sh Lua Script в Python - PullRequest
0 голосов
/ 25 марта 2020

Я использую ScrapySpla sh и пытаюсь передать таблицу, созданную в Lua, в метод Parse. Если я пытаюсь получить доступ к таблице, я получаю сообщение об ошибке типа: «SplashJsonResponse 'объект не может быть подписан".

My 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)

Однако, как уже говорилось, это просто выдаст мне ошибку в строке images = response ['img'], сказав, что объект SplashJsonResponse не может быть подписан.

Кто-нибудь знает, как получить доступ к значениям в этой таблице Lua в методе разбора?

Спасибо

1 Ответ

0 голосов
/ 25 марта 2020

Хорошо, я как-то решил это, но понятия не имею, как. По сути, я изменил оператор return в своем операторе 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(self, response):
        images = (response.data['a'])

Теперь у меня есть словарь под названием images и может получить доступ к каждой из переменных через изображения ['i'], хотя я понятия не имею, почему это работает, но мой оригинальный метод этого не сделал. Если кто-то понимает, почему, то не стесняйтесь комментировать и дайте мне знать. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...