Pyppeteer и Javascript запрос - PullRequest
       8

Pyppeteer и Javascript запрос

0 голосов
/ 04 ноября 2018

Я пытаюсь перенести проект узла, который использует puppeteer, в проект python, который использует pyppeteer.

У меня есть следующий запрос javascript, который работает правильно.

const values = await page.evaluate(
        () => [...document.querySelectorAll('.table')]
            .map(element => element.getAttribute('data-options'))
    );

Когда я пытаюсь сделать то же самое в python / pyppeteer:

values = await page.evaluate('''() = > [...document.querySelectorAll('.table')]
                   .map(element= > element.getAttribute('data-options'))
    ''')

Я получаю эту ошибку:

Traceback (most recent call last):
  File "/home/user/PycharmProjects/pytabledata/main.py", line 30, in <module>
    asyncio.get_event_loop().run_until_complete(main())
  File "/usr/lib/python3.6/asyncio/base_events.py", line 468, in run_until_complete
    return future.result()
  File "/home/user/PycharmProjects/pytabledata/main.py", line 23, in main
    }''')
  File "/home/user/Envs/pytabledata/lib/python3.6/site-packages/pyppeteer/page.py", line 1158, in evaluate
    return await frame.evaluate(pageFunction, *args, force_expr=force_expr)
  File "/home/user/Envs/pytabledata/lib/python3.6/site-packages/pyppeteer/frame_manager.py", line 295, in evaluate
    pageFunction, *args, force_expr=force_expr)
  File "/home/user/Envs/pytabledata/lib/python3.6/site-packages/pyppeteer/execution_context.py", line 55, in evaluate
    pageFunction, *args, force_expr=force_expr)
  File "/home/user/Envs/pytabledata/lib/python3.6/site-packages/pyppeteer/execution_context.py", line 114, in evaluateHandle
    helper.getExceptionMessage(exceptionDetails)))
pyppeteer.errors.ElementHandleError: Evaluation failed: ReferenceError: Invalid left-hand side in assignment

Как я могу заставить запрос работать в python?

1 Ответ

0 голосов
/ 04 ноября 2018

В коде JavaScript есть опечатки с оператором стрелки: = > (лишний пробел). После исправления код хорошо работает на моей машине:

values = await page.evaluate('''() => [...document.querySelectorAll('.table')]
                   .map(element => element.getAttribute('data-options'))
    ''')
...