爬蟲-怎么拿到JS生成的結果?


解決思路

1.找到JS代碼

2.在python重寫邏輯,或者python調用js執行的模塊拿到結果

看看在哪里調用了這個js邏輯

點擊方法名 進入

發現調用了新的函數

再次查看visit的調用函數,找到參數的生成方式為

 onclick="visit(\'' + autourl[b] + '\')"  

發現新的函數

function auto(b) {
    t = (tim - ts[b]) / 100;
    tt = t.toString().split('.');
    if(tt.length==1) t = t.toString() + '.00';
    else if(tt[1].length < 2)  t = t.toString() + '0';
    if (t > 4) document.getElementById("txt" + b).innerHTML = '<font color=red>連接超時!<\/font>';
    else document.getElementById("txt" + b).innerHTML = 'takes ' + t + 's.   <a href="javascript:;" class="ok" onclick="visit(\'' + autourl[b] + '\')"> 現在訪問 <\/a>'
}

發現經常會需要用到Gword 我們可以解析拿到這個數據

 

好開始剛

我們拿到了Gword

 這個地方有2個解決方案了

  • 1是用Python重寫編寫相關邏輯
  • 2通過Python調用JS直接實現

我們把需要用到的js代碼復制到一個文件里面

 

 

通過Python 執行JS庫 execjs

execjs可以在python中運行javascript代碼

官網:https://pypi.org/project/PyExecJS/

安裝:pip install PyExecJS

可以切換清華源

安裝成功之后在pycharm中引入一下,不出錯誤,表示運行成功

我們對JS進行編譯

import execjs
with open('scmor.js', 'r', encoding='utf-8') as f:
    js = f.read()
    ctx = execjs.compile(js)  # 對JS進行編譯
print(ctx.call('visit','QSQ7XggEHBUhXDxYLwIFHwh4ZRkwXFI0Pw4jGj5ZXlI='))  #給visit 進行傳遞參數 拿到我們的url 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM