网络爬虫难免会遇到JS加密,当遇到比较难搞得JS加密时, 很多小伙伴会选择使用selenium+Chrome,
但是selenium有时候未必是万能的, 特别是浏览器在headless会出现一些不好解决的BUG,最关键的是效率!
如果selenium 无法解决但是又必须获取这些数据, 破解JS势在必行 execjs是python很好的一个执行js的工具
下面看看基本的用法
pyExecJs
Node.js
pip install pyExecJs
apt-get install nodejs
# ubuntu
下面是使用execjs解析银监会的第一层解析
import execjs
import requests
import re
url = 'http://www.cbrc.gov.cn/zhuanti/xzcf/get2and3LevelXZCFDocListDividePage//1.html'
resp_body = requests.get(url).text
get_js = re.findall(r'', resp_body)[0]
print(get_js)
get_js = re.sub(r'eval\(','return(', get_js)
resHtml = "function getClearance(){" + get_js + "};"
ctx = execjs.compile(resHtml)
temp = ctx.call('getClearance')
print(temp)
两次print的结果有比较大的差异
如果对银监会数据感兴趣可以留言交流