W skrypcie mam tak:
function A(){
this.B = function(){
};
};
Jak w pythonie pobtać z tego skryptu wartość B nie zmieniająć nic w skrypcie.?
Wytłumaczyłeś jasno, i dostałeś jasną odpowiedź. Jeśli chcesz wykonać skrypt, to musisz wykonać skrypt. Selenium jest jednym z rozwiązań do tego.
Możesz też, teoretycznie, robić statyczną analizę skryptu — tzn. nie wykonywać go, a tylko przeszukać jego plik tekstowy pod kątem odpowiednich informacji. Metoda… zawodna, delikatnie ujmując. Ale możliwa, i jak masz coś naprawdę prostego do wyciągnięcia, to może i nawet lepsza.
Nie rozumiem, czego nie rozumiesz — wykonać skrypt i dostać ją jako rezultat (tak jak to opisuje link wyżej); albo wykonać statyczną analizę kodu szukając czego trzeba. Np. wczytując plik i szukając wyrażenia regularnego nazwa_zmiennej = (.*);
. Drugie rozwiązanie zadziała tylko w bardzo prostych przypadkach.
xenix33 napisał(a):
Oki. Dzięki. To jest jakiś pomysł, ale nie da się wyciągnąć inaczej, jak zmienić skrypt?
Powiedz dokładnie co chcesz zrobić. Z podkreśleniem na dokładnie.
Ten wątek to poezja. W sensie, że nie wiadomo, o co autorowi chodzi i można na różne sposoby interpretować XD
xenix33 napisał(a):
Może jaśniej wytłumaczę. Chcę w pythonie pobrać wartość w funkcii
w js. Czyli jak funkcja ma w skrypcie zmienną, to ja chcę ją pobrac w py.
Napisz kontekst. Co piszesz, że korzystasz jednocześnie z Pythona i JSa? Stronę webową? Scraper? Test automatyczny? Bo teraz to można zgadywać.
W przypadku kiedy byś pisał stronę webową, gdzie Python byłby po stronie backendu, a JavaScript po stronie frontendu, to odpowiedź brzmi:
należy zserializować zmienną do np. JSON, przesłać JSON przez sieć (np. za pomocą fetch
), a potem w Pythonie odebrać to i zdeserializować.
W innych przypadkach nie jestem w stanie ci odpowiedzieć.
xenix33 napisał(a):
Mam skrypt w js:
linkPiszę skrypt w pythonie i potrzebuję kilku zmiennych z tego skryptu, np: device_id.
A ten skrypt odpalasz w przeglądarce czy lokalnie na swojej maszynie?
xenix33 napisał(a):
Skrypt w js w soim programie pobieram do zmiennej. Czyli njs mam w zmiennej tekstowej.
Czyli chcesz evaluować JS w swoim programie? (Tzn uruchomić)?
Jeśli tak, to możesz albo exec()
i uruchomić proces np z node
; albo zainstalować js2py
i próbować uruchomić JS'a z pythona. Ale to mi się wydaje dziwny pomysł.
xenix33 napisał(a):
Skrypt w js w soim programie pobieram do zmiennej. Czyli njs mam w zmiennej tekstowej.
Widzę że w ramach "objaśnień" jak potłuczony wklejasz to samo kiepsko napisane zdanie, i nie rozumiesz zadawanych ci pytań.
Nie lepiej przepisać js na pythona? Wygodniej będzie się z tego korzystać.
xenix33 napisał(a):
Js na pa kod pythona. Duży skrypt i za dużo roboty. Ale dzięki. Coś wymyślę.
najlepiej w tym kodzie js zrób
console.log(JSON.stringfy(output));
potem odpal skrypt w nodzie:
node skrypt.js
i potem przepipe'uj go do pythona
node skrypt.js | python my_program.py
i w pythonie odczytaj stdin
i zrób json.loads()