06 - 动态HTML页面处理-js2py与selenium模块

目录

1. js2py基本介绍
  • js2py简介
  • js2py破解百度翻译sign
2. selenium与phantomjs
  • 爬虫与反爬虫间的斗争
  • 动态HTML技术
  • 动态数据获取-selenium与phantomjs

课堂笔记

1. js2py基本介绍
1.1 js2py简介
  • js2py是纯Python实现的库,用于在python文件中运行js代码,实质是将js转换成python代码
  • 基本用法:
import js2py
# 等同于执行js代码console.log("hello world!")
js2py.eval_js('console.log("hello world!")')    # 'hello world!'

fun_js = '''
    function add(a, b){
        return a+b
    }
'''
# 将fun_js字符串中js代码转换成python代码
res = js2py.eval_js(fun_js)
# 打印js代码执行的结果
print(res(4, 5))            # 9
  • js代码翻译
# 将js代码翻译成python代码
print(js2py.translate_js('console.log("hello world!")'))
# 将指定js文件翻译成.py文件
js2py.translate_file('test.js', 'trans.py')
  • js代码中使用python函数
# 相当于将sum函数的功能赋予python_sum
ctx = js2py.EvalJs({
   'python_sum': sum})
print(ctx.python_sum)   # 'function sum() { [python code] }'
# python_sum含义与sum一致
js_code = '''
    python_sum([1, 2, 3])
'''
print('js_code =', ctx.eval(js_code))   # js_code = 6
  • js代码中引用Python模块(pyimport 模块名
js_code = """
    pyimport requests		// 这里使用pyimport引入Python模块
    console.log('导⼊成功');
    var response = requests.get('http://www.baidu.com');
    console.log(response.url);
    console.log(response.content);
"""
# 实质是将js代码转换成python代码
js2py.eval_js(js_code)

1.2 js2py破解百度翻译sign
// sign.js文件,可在chrome中全局搜索sign,然后定位到Ajax请求的数据表单中sign:y(n),进行断点测试,
//将鼠标放在y(n)上,会出现函数路径,打开即可得到js原码位置,然后copy+paste
function n(r,o){
   
    for(var t=0;t<o.length-2;t+=3){
   
        var a=o.charAt(t+2);a=a>="a"?a.charCodeAt(0)-87:Number(a),
        a="+"===o.charAt(t+1)?r>>>a:r<<a,
        r="+"===o.charAt(t)?r+a&4294967295:r^a
    }
    return r
}
function e(r){
   
    // 这里需要添加i,为不变值,在断点测试中获取
    var i = "320305.131321201";
    var o=r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
    if(null===o){
   
        var t=r.length;
        t>30&&(r=""+r.substr(0,10)+r.substr(Math.floor(t/2)-5,10)+r.substr(-10,10))
    }else{
   
        for(var e=r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值