Как мой HTML-файл может передать результаты JavaScript обратно в скрипт Python, который его вызывает? - PullRequest
2 голосов
/ 23 августа 2011

У меня есть скрипт Python, и этот скрипт Python должен вызывать html-файл (то есть веб-страницу), хранящийся локально на компьютере.Html-файл выполняет некоторые вычисления (jquery, javascript и т. Д.) И должен передать результат обратно скрипту python.Я не хочу менять настройку (скрипт python вызывает html-файл, а результат передается обратно в скрипт python), поэтому, пожалуйста, не спрашивайте почему.

Может кто-нибудь сказать мне, как решить эту проблему?Как я могу передать результат из html-файла в вызывающую функцию python?Это беспокоит меня с 2 недель.Спасибо!

Ответы [ 4 ]

3 голосов
/ 23 августа 2011

Если вы хотите выполнить javascript в файле HTML, вам потребуется реализовать полную среду выполнения javascript в Python (конечно, могут существовать или порты из других языков.) Файл HTML не является исполняемым, ив большинстве сред для него также нет интерпретатора, кроме браузеров.

Если вы можете каким-то образом отделить JavaScript от HTML (то есть, если он никак не зависит от DOM), вы можетеуметь использовать что-то вроде оболочки SpiderMonkey для выполнения вашего javascript и чтения его стандартного вывода в Python.

Если нет, вам понадобится полноценный браузер для интерпретации HTML и javascript, иЗатем вам нужно будет как-то прочитать его (визуальный) вывод, который может быть невероятно сложным.

1 голос
/ 23 августа 2011

http://nodejs.org/
Удалите все, что связано с dom, и запустите его из команды с узлом, затем вызовите скрипт Python из узла с выходом out из JS, а затем просто передайте out out куда-нибудь.

0 голосов
/ 23 августа 2011

Вы не указали точно, что вы имеете в виду, когда говорите, что ваш скрипт Python «вызывает» файл HTML, но при условии, что вы имеете в виду, что Python получает содержимое файла HTML, вам потребуется Python для интерпретации и запускаJavaScript для начала.

Я написал скрипт на Python, который подключается к моему провайдеру интернет-банкинга (который активно использует JavaScript), и в итоге пришлось использовать Selenium для управления фактическимвеб-браузер, чтобы проанализировать JavaScript для меня, а затем запросить DOM отрендеренной веб-страницы через Selenium.Это было определенно нетривиально.

В ответах на мой вопрос упоминается пара HTML-парсеров для Python.Я бы согласился с ответом Джеймса , однако - получить JavaScript из HTML-файла и запустить его с помощью node.js.

0 голосов
/ 23 августа 2011

Это было бы очень трудно сделать без использования внешних библиотек. Для начала вам понадобится анализатор HTML, чтобы вы могли разобраться в HTML. Тогда вам понадобится анализатор / лексер / движок Javascript, чтобы вы могли выполнять реальные вычисления. Я думаю, что было бы возможно реализовать это в Python, но я бы порекомендовал поискать проект с открытым исходным кодом, который уже реализовал это. Затем вам нужно будет проанализировать / lex / интерпретировать javascript и передать результат обратно в python.

В целом, я бы сказал, что проще перенести вычисления Javascript на Python, но это только я.

...