- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
Python 자료구조 Python, PyV8로 javascript 실행하기
2018.08.14 00:31
Python, PyV8로 javascript 실행하기
파이썬에서 웹크롤링을 하다보면 자바스크립트로 데이터를 가져올때가 종종있다
PyV8은 구글에서 개발한 자바스크립트 엔진, V8을 파이썬에서 실행할수 있도록 한 라이브러리이다.
자바스크립트를 실행하고 결과를 Python으로 전달한다.
https://code.google.com/archive/p/pyv8/downloads
pip를 통해서도 설치할 수 있다.
-. 간단 사용 방법
import PyV8 ctxt = PyV8.JSContext() #PyV8 사용 준비 ctxt.enter() ctxt.eval('var i = 1 + 2;') print ctxt.eval('i;')
>>> 3
-. locals
PyV8은 자바스크립트를 실행하면서 생성된 모든 변수를 locals 클래스에 보관을 하고 있다.
import PyV8 ctxt = PyV8.JSContext() #PyV8 사용 준비 ctxt.enter() ctxt.eval('var x = 1;') ctxt.eval('var y = 2;') ctxt.eval('var z = x + y;') print ctxt.locals.keys()
>>> ['x', 'y', 'z']
-. 사용 예
# -*- encoding:utf8 -*- # Python version in the development environment 2.7.11 import os,sys,time os.chdir(os.path.dirname(__file__)) import PyV8 # 테스트에 사용할 javascript 함수 js = ''' function Hello() { document.write("hello, Python!!!") }''' class MockDocument(object): #Python에는 없는 document 객체를 처리하기 위해 Mock object를 생성 def __init__(self): self.value = '' def write(self,*args): #document.write 처리용 method self.value += ''.join(str(t) for t in args) class Global(PyV8.JSClass): #PyV8 문맥에서 javascript와 함께 사용이 가능한 Global 클래스 선언 def __init__(self): self.document = MockDocument() # document 객체 처리 scope = Global() ctxt = PyV8.JSContext(scope) ctxt.enter() ctxt.eval(js) #javascript 실행 ctxt.eval('Hello();') print scope.document.value
>>> hello, Python!!!
위 처럼 PyV8을 이용하면 Python으로도 javascript를 실행할수가 있다.
참조사이트
http://blog.naver.com/powerhw/220262351769
http://stackoverflow.com/questions/10136319/executing-javascript-from-python
http://www.hanul93.com/kicomav-pyv8/
https://pypi.python.org/pypi/PyV8
[출처] http://blog.naver.com/PostView.nhn?blogId=dudwo567890&logNo=220895234080&parentCategoryNo=&categoryNo=39&viewDate=&isShowPopularPosts=false&from=section
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.