來源:Python爬蟲與資料探勘作者:黃偉前言我們都知道Python可以很輕鬆的實現某些功能,而且還可以編寫網頁,比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的指令碼語言,還是第
2021-06-03 14:45:23
來源:Python爬蟲與資料探勘
作者:黃偉
前言
我們都知道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 execjs
import os
os.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.jsfunction 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,只要我們用好了這些模組以後玩爬蟲就能更加技高一籌,並且準確率更高了。
相關文章
來源:Python爬蟲與資料探勘作者:黃偉前言我們都知道Python可以很輕鬆的實現某些功能,而且還可以編寫網頁,比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的指令碼語言,還是第
2021-06-03 14:45:23
在五月初Intel釋出了Tiger Lake-H系列高效能移動處理器,而在臺北電腦展的釋出會上,Intel再次展示了這些第11代酷睿處理器強勁的效能,而且接下來各個合作伙伴會把搭載Tiger Lake
2021-06-03 14:44:48
果粉之家,專業蘋果手機技術研究十年!您身邊的蘋果專家~今日訊息,蘋果公司 CEO 蒂姆庫克 (Tim Cook) 在週三時向員工發出郵件,希望他們在今年9月開始每週在辦公室工作的時間不少
2021-06-03 14:44:43
不可否認,榮耀X系列是榮耀的千元旗艦,2018年的榮耀8X是真正的街機,當時獲得了非常高的銷量和熱度,也收穫了眾多消費者的認可。2019年7月23日釋出的榮耀9X同樣也是一部經典之作,雖
2021-06-03 14:44:18
6月2日晚間,華為正式釋出HarmonyOS2(鴻蒙),訊息一出迅速登上各種熱搜榜。據瞭解,這個新的作業系統將打通手機、電腦、平板、電視、無人駕駛、車機裝置、智慧穿戴等裝置。最新資料
2021-06-03 14:44:03
不知您是否使用過Prometheus、Azure Monitor、AWS Container Insight之類的可觀察性工具,或者是諸如Logic Monitor之類的商業產品,來監控Kubernetes叢集,並在儀表板上顯示CPU和
2021-06-03 14:26:27