파이썬에서 자바스크립트 소스를 실행시킬수 있는 파이썬용 자바스크립트 엔진이다.
개인적으로 나름 많이 유용하다고 생각한다. 프록시에서 다른 사이트를 들어가거나, 네이버에서
로그인 시 자바스크립트로 암호화된 값을 던져주는데 이 값을 잘 받아서 쿠키에 설정을 잘 해야
동작이 잘 된다. 파이썬으로 자동으로 프록시에서 다른 사이트로 접속하는 스크립트를 짜려고 할 경우
이 자바스크립트값을 받아올 수가 없다.(확인 버튼을 누르는 순간 값이 생성되기 때문.) 그렇다고
자바스크립트를 일일히 다 해석해서 파이썬에 코드로 짜넣을 수가 없다.(천줄 이상의 긴
자바스크립트이기 때문에) 그럴 경우 자바스크립트 엔진을 이용해서 알아서 연산결과를 파이썬 코드로
가져와라~ 는 식으로 코드를 짜게되면 매우 편하다. 처음에 자바스크립트 엔진에 대해서 몰랐을때에는
단순하게 WINAPI로 직접 버튼을 클릭하는 스크립트를 만들까..? 생각했는데 그건 역시나 최악일때의
방법론이다.
home : https://code.google.com/p/pyv8/
참고 : http://blog.naver.com/powerhw/220262351769
실험용 소스.
# -*- encoding: cp949 -*- import PyV8 #js라는 변수에 자바스크립트 코드를 넣는다. js=""" function Hello() { document.write("Hello World!"); } """ class mock_document(object): def __init__(self): self.value='' def write(self, *args): self.value += ''.join(str(i) for i in args) class Global(PyV8.JSClass): def __init__(self): self.document = mock_document() self.alert = mock_document() scope = Global() ctxt = PyV8.JSContext(scope) ctxt.enter() ctxt.eval(js+"Hello()") #여기서 자바스크립트 엔진이 위의 Hello()함수를 정의하고 실행한다. print scope.document.value #실행한 값은 여기에 들어있다.
위에 주석적은 3군대만 알면 알아서 잘 써먹을 것 같다. *args에서 값이 반환되고, 텍스트로밖에 반환이 안 되는것 같다. alert()같은건 창을 띄워야되기때문에 안되는거 같다.
결론 : 자바스크립트 연산 후 값을 받아와야 될 때나 쓰자.......
단점 : 이거 깔면 ajax나 그런 다른 부가기능까지 들어있는줄 알았는데 순수 자바스크립트만 들어있음. 그래서 XMLHttpRequest 이런건 파이썬으로 직접 구현해줘야 된다는거.
원래는 네이버 로그인 구현해보려고 http://acuros.pe.kr/?p=198 참고해서 뭐 해보려다가 좋은 모듈만 알아감.
'Python > 2.7 information' 카테고리의 다른 글
파이썬을 더 멋있게 쓰기위한 함수, itertools 모듈 (0) | 2015.03.05 |
---|---|
*args, **kwargs (0) | 2015.03.01 |
파이썬의 멀티쓰레딩과 멀티프로세싱. (0) | 2015.02.13 |
scapy 기초. (0) | 2015.02.09 |
pythonpy, 리버스 커넥션 쉘(python 버전) (0) | 2015.02.09 |