Pyppeteer и Javascript запрос
Я пытаюсь перенести проект узла, который использует 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 ответ
Решение
В коде JavaScript есть опечатки на операторе стрелки: = >
(избыточное пространство). После их исправления код хорошо работает на моей машине:
values = await page.evaluate('''() => [...document.querySelectorAll('.table')]
.map(element => element.getAttribute('data-options'))
''')