<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2314字,需瀏覽 5分鐘

           ·

          2021-03-21 17:02

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

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

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

          前言

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


          一、PyExecJS

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

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

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

          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庫(kù),分別是PyExecJS、Js2Py和PyV8,只要我們用好了這些模塊以后玩爬蟲就能更加技高一籌,并且準(zhǔn)確率更高了。

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

          往期精彩文章推薦:

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

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

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

          /今日留言主題/

          隨便說(shuō)一兩句吧~

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产白丝视频 | 中文字幕麻豆 | 波多野结衣无码一区=区三区 | 成人免费无码大片A毛片 | 久久97|