盤點3個可以操作JavaScript的Python庫

點擊上方“ Python爬蟲與數據挖掘 ”,進行關注

回覆“書籍”即可獲贈Python從入門到進階共10本電子書

人生若只如初見,何事秋風悲畫扇。

前言

我們都知道Python可以很輕鬆的實現某些功能,而且還可以編寫網頁,比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的腳本語言,還是第一次聽說,小編也是第一次聽說,於是就跟大家腦補這一知識。


一、PyExecJS

是一個可以執行JavaScript腳本的Python模塊,可以與網頁上的JavaScript進行交互,這樣就能更加精準的獲取到網頁中的加密內容,如果用Python中的網絡模塊進行請求,會無法解密文檔中的加密內容,這個時候使用我們的PyExecJS可以很方便到的解密網頁中的加密內容,當然這得你會Js逆向纔可以。不過要想PyExecJS解析JS語句沒毛病,還得整個Js語言解析環境,這裏推薦NodeJS,尷尬。我們來看下PyExecJs的用法:

1.常規操作

import execjsaa=execjs.eval("'one|two|three'.split('|')") #執行JavaScript代碼,將字符串分割形成數組print(aa) 
e=execjs.compile(''' #編譯一個表達式function add(x,y){ return x+y;}''')print(e.call('add',10,20))#調用編譯好的函數並且賦值

也可以通過獲取引擎來運行我們的語句,如下:

print(execjs.get().eval('1+1'))


2.查看解釋引擎

print(execjs.get().name)

這裏JavaScript的解釋引擎是JScript,我們還可以使用自己指定給力的引擎,比如“Nodejs”。


3.指定引擎

import execjsimport osos.environ["EXECJS_RUNTIME"] = "Node"print(execjs.get().name)

也可以手動指定引擎,如下:

js1=execjs.get(execjs.runtime_names.JScript)print(js1.eval('1'))
js2=execjs.get(execjs.runtime_names.Node)print(js2.eval('2'))


二、Js2Py

這個我覺得算是比較好的了,可以說是一個綜合體,它不需要依賴別的環境,可以獨立運行Js文件,只不過它的運行速度可能會稍微慢一點而已,但是這都不叫事。下面我們來看看它有哪些神器的功能吧。

1.常規操作,必須的


2.循環遍歷

import js2pyaa=js2py.eval_js('''var i=0;for(var c=1;c<6;c++){console.log(c);}
''')print(aa)


3.讀取Js文件

我們可以把JS文件寫入文件中,以便我們進行調用,如下:

1.js

function f(aa){    if(aa>11){        console.log('OK')
}else{ console.log('Fail') }}

Python文件

import  js2pywith open('1.js','r') as f:    aa=js2py.eval_js(f.read())    print(aa(11))


4.爬取網站數據

這裏我們以淘寶爲主,我想整它的JS腳本文件,如下:

import execjsimport requestsimport reurl = 'https://ai.taobao.com/?pid=mm_26632323_6762370_25910879'res=requests.get(url).textjs=re.findall(r'<script>(.*?)</script>',res)print(js,'\n')js1=re.sub(r'eval\(','return(',js[0])html="function getLego2WPK(){" + js1 + "};"ctx = execjs.compile(html)temp = ctx.call('getLego2WPK')print(temp)


三、PyV8

基於Google的V8引擎打造,遺憾的是目前只支持Python2版本,而且已不再維護,建議Python2的小夥伴可以去試試。


四、總結

本文主要盤點了3個可以操作JavaScript的Python庫,分別是PyExecJS、Js2Py和PyV8,只要我們用好了這些模塊以後玩爬蟲就能更加技高一籌,並且準確率更高了。

------------------- End -------------------

往期精彩文章推薦:

歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持

想加入Python學習羣請在後臺回覆【入羣

萬水千山總是情,點個【在看】行不行

/今日留言主題/

隨便說一兩句吧~

本文分享自微信公衆號 - Python爬蟲與數據挖掘(crawler_python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章