python3爬虫如何使用pyExecJS解析js代码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43886133/article/details/93488008

网络爬虫难免会遇到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'<script>(.*?)</script>', 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的结果有比较大的差异

如果对银监会数据感兴趣可以留言交流

猜你喜欢

转载自blog.csdn.net/weixin_43886133/article/details/93488008