久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

聽說你在玩 Python 爬蟲遇到 JavaScript 的時候還在使用 selenium ,?

 小帥b 2021-10-12
我們在玩爬蟲的時候
對于一些沒做什么反爬的網(wǎng)站來說

使用簡單的庫
三兩下就能把數(shù)據(jù)爬取下來了





不過
對于一些別人認為
比較重要的數(shù)據(jù)來說

可就沒有那么容易了
他們認為這些數(shù)據(jù)很重要
但是又不得不展示給客戶

所以只能想盡辦法


比如:

對方是如何喪心病狂的通過 css 加密讓你爬不到數(shù)據(jù)的

python爬蟲反反爬 | 像有道詞典這樣的 JS 混淆加密應該怎么破




有人說
對于這些前端所搞的事情
用 selenium 或者 Puppeteer 不就得了

它們確實很強大
不過終究還是需要瀏覽器配合

比起直接通過請求數(shù)據(jù)獲取
速度和性能都沒那么好





有人開玩笑說
我 TM 本來是搞爬蟲的
怎么搞著搞著變成搞前端了






對于一些簡單的網(wǎng)站
直接用 python 幾行代碼就輕松搞定了

而對于一些用 JS 混淆的網(wǎng)站
就需要去分析了

簡單點的 JS 加密函數(shù)
可以使用 Python 模擬相關(guān)的函數(shù)


比如我們玩過的那個
有道詞典的
就是模擬 hash 的加密函數(shù)


那么對于一些比較復雜的 JS 混淆
可就沒那么簡單了

一般情況下
沒那么容易通過 Python 去模擬





那有什么方法呢,?
接下來就是
學習python的正確姿勢


既然我們無法簡單的使用 Python 去模擬 JS 操作

那么有沒有可能
把那些難以理解的 JS 代碼
直接給拉下來

然后使用 Python 去運行它們呢,?


也就是說
使用 Python 運行那些難以理解的 JS 代碼
然后得到我們要的結(jié)果


答案是有的
Python 有這樣的庫
使用它們就可以來執(zhí)行 JS 代碼





今天就給你介紹幾個這樣的庫

通過它們
你就可以把你分析到的關(guān)鍵 JS 代碼
然后扔給它們,一頓執(zhí)行
拿到你要的結(jié)果
js2py
這個庫很輕量
是基于 ECMAScript 實現(xiàn)的
來具體感受一下它的用處吧


安裝

pip install js2py

然后就可以使用

js2py.eval_js()

來執(zhí)行 js 的語句了

比如



除了這樣之外
還可以直接在 JS 代碼里面執(zhí)行 Python 代碼

比如我們可以在 JS 使用 python 的 requests 庫
來請求我們的 vip 網(wǎng)站
并且讓它返回響應狀態(tài)碼



    
可以看到
在這里返回了 200
說明可用
很 nice 啊


此外
還可以將 js 文件轉(zhuǎn)化為 python








PyV8


PyV8 是 Google 家的
V8是 Google 開源的 JS 引擎

根據(jù)你的系統(tǒng)
在以下鏈接下載 V8

https://github.com/emmetio/pyv8-binaries

將文件解壓下來




放進你 python 環(huán)境下的 site-packages 中



將 .so 后綴的文件改成 _PyV8.so



如果你不知道你的 site-packages 在哪里
可以這樣查詢


然后你就可以愉快的使用 PyV8 了


import PyV8ctxt = PyV8.JSContext() #獲取對象ctxt.enter() #調(diào)用js前需要調(diào)用這個函數(shù)result = ctxt.eval(js) #執(zhí)行JSctxt.leave() #執(zhí)行完畢






PyExecJS


這個庫需要運行在一定 js 環(huán)境下才能使用
比如我們剛剛說的 Google 的 V8
比如 node.js

雖然這個庫作者不再維護
不過還是可以使用的

使用 pip 即可安裝

pip install PyExecJS

使用例子是這樣的

>>> import execjs>>> execjs.eval("'red yellow blue'.split(' ')")['red', 'yellow', 'blue']>>> ctx = execjs.compile("""... function add(x, y) {... return x + y;... }... """)>>> ctx.call("add", 1, 2)3




ok
以上就是使用 Python 運行 JS 的主要內(nèi)容
希望對你有幫助

那么我們下回再見
peace


掃一掃

學習 Python 沒煩惱

也許你還想看
1、給你們說幾點鮮有人知的爬蟲技巧
2,、教你裝逼了:怎么樣發(fā)布你的 Python 代碼給別人 “pip install”

ps:如果你也想要享受帥b提供的非公開私密內(nèi)容的話,,可以來了解一下:帥氣的VIP

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多