1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        盤點(diǎn)3個(gè)可以操作JavaScript的Python庫

        共 2314字,需瀏覽 5分鐘

         ·

        2021-03-21 17:02

        點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

        回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

        人生若只如初見,何事秋風(fēng)悲畫扇。

        前言

        我們都知道Python可以很輕松的實(shí)現(xiàn)某些功能,而且還可以編寫網(wǎng)頁,比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的腳本語言,還是第一次聽說,小編也是第一次聽說,于是就跟大家腦補(bǔ)這一知識(shí)。


        一、PyExecJS

        是一個(gè)可以執(zhí)行JavaScript腳本的Python模塊,可以與網(wǎng)頁上的JavaScript進(jìn)行交互,這樣就能更加精準(zhǔn)的獲取到網(wǎng)頁中的加密內(nèi)容,如果用Python中的網(wǎng)絡(luò)模塊進(jìn)行請(qǐng)求,會(huì)無法解密文檔中的加密內(nèi)容,這個(gè)時(shí)候使用我們的PyExecJS可以很方便到的解密網(wǎng)頁中的加密內(nèi)容,當(dāng)然這得你會(huì)Js逆向才可以。不過要想PyExecJS解析JS語句沒毛病,還得整個(gè)Js語言解析環(huán)境,這里推薦NodeJS,尷尬。我們來看下PyExecJs的用法:

        1.常規(guī)操作

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

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

        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)

        也可以手動(dòng)指定引擎,如下:

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


        二、Js2Py

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

        1.常規(guī)操作,必須的


        2.循環(huán)遍歷

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


        3.讀取Js文件

        我們可以把JS文件寫入文件中,以便我們進(jìn)行調(diào)用,如下:

        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.爬取網(wǎng)站數(shù)據(jù)

        這里我們以淘寶為主,我想整它的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版本,而且已不再維護(hù),建議Python2的小伙伴可以去試試。


        四、總結(jié)

        本文主要盤點(diǎn)了3個(gè)可以操作JavaScript的Python庫,分別是PyExecJS、Js2Py和PyV8,只要我們用好了這些模塊以后玩爬蟲就能更加技高一籌,并且準(zhǔn)確率更高了。

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

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

        萬水千山總是情,點(diǎn)個(gè)【在看】行不行

        /今日留言主題/

        隨便說一兩句吧~

        瀏覽 49
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲黄色电影网站 | 露脸丨91丨九色露脸 | 无码在线成人亚洲 | Aa黄片色黄 | 91精品国产综合久久久久久 | 亚洲AV影视 | 小黃片秘 嗯嗯啊 | 园产精品久久久久久久7电影 | 久久久久久久久久久久久电影 | 国内自拍一区 |