python爬蟲執行js代碼-execjs


一.安裝模塊

pip install PyExecJS

execjs會自動使用當前電腦上的運行時環境(建議用nodejs,與Phantomjs)

二.簡單的使用

import execjs

js_obj = execjs.compile('js字符串')
js_obj.call('js字符串中方法',參數)

三.js字符串中模擬瀏覽器環境

即導入documentwindow對象

一.安裝依賴

npm install jsdom

二.導入包

js_obj = execjs.compile('js字符串',cwd='node_modules')

三.js字符串中添加抬頭

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
window = dom.window;
document = window.document;
XMLHttpRequest = window.XMLHttpRequest;

四.其它方案

使用PhantomJS之前,需要下載它的驅動,然后放下Python代碼統一目錄下。對之前的Python代碼也進行修改:
import execjs
 
import os
os.environ["EXECJS_RUNTIME"] = "PhantomJS"
node = execjs.get()
file = 'eleme.js'
ctx = node.compile(open(file).read())
js_encode = 'getParam()'
params = ctx.eval(js_encode)
print(params)

模擬瀏覽器用的selenium和chrome的webDriver(效率高點,可以自打開一個瀏覽器(都調用一個webdriver對象)),代碼如下:

復制代碼
from selenium import webdriver
 
browser = webdriver.Chrome(executable_path='chromedriver.exe')
with open('eleme.js', 'r') as f:
    js = f.read()
print(browser.execute_script(js))
 


免責聲明!

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



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