python使用execjs,把web程序員使用js的問題突破

做爬蟲過程中,常常有些web程序員,喜歡在網頁JS中做一些變量,常見的方法是用正則匹配。

但是如果有人用了複雜的JS,變量取不到,怎麼辦?直接用ececjs,在你的Python代碼中,

1、先下載獲取的網頁代碼,

2、提取網頁代碼中的js ,可以用正則表達式匹配,較爲簡單

3、接下來就是把取得的js代碼跑起來,下面就是如何把取得的代碼跑起來的過程。

使用execjs常見的一些報錯如下,網上我整理一下

1、解決window 未定義
2、解決$未定義


步驟如下
前提是安裝node.js
Windows下,cmd命令行下執行安裝
1、安裝jsdom

 npm i jsdom -g

2、安裝  jquery 代碼如下

npm i jquery -g
3、查詢全局引用路徑,保存用於後面使用

npm root -g
返回(我的電腦的返回結果)

C:\Users\Administrator\AppData\Roaming\npm\node_modules

下面是在pycharm中編寫代碼

1、在JS代碼前添加如下

jsdomstr='''
var jsdom = require('jsdom');
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;
var $ = jQuery = require('jquery')(window);
'''
2、字符串組合

import execjs
 
txt_getUrl_js=  '  function doit(){return 調用他人頁面中的變量; }  ' 
 
 
strt=jsdomstr  + 你下載的網頁中的js代碼 + 自定義js腳本代碼,用於你隨心所欲的調用別人的js生成的參數
 
#注意這一步:windows下使用如下命令,查詢  npm root -g
#得到 C:\Users\Administrator\AppData\Roaming\npm\node_modules
 
js=execjs.compile(strt,cwd=r'C:\Users\Administrator\AppData\Roaming\npm\node_modules')
 
result=js.call('doit')
print(result)
'下面就是自由發揮的時間,你可以查詢任何網頁中JS返回的參數。想用js攔住你的時代,過去了。

可以去試試你認爲不可能的網站,生成什麼ua,token等等。
—————

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