python爬虫笔记六:js的调用

本文介绍了如何使用Python的PyExecJS库配合Node.js运行JS代码,通过GenCheckKey函数生成随机验证码,并解析getGroupNum函数处理数字范围。重点在于如何将前端验证码逻辑与后端交互应用到实际开发中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       一些网站动调用ajax等操作时,会通过JS,生成一个验证码(CheckID),后台进行比对,如果正常才能调用,这就需要我们能够直接把js的调码整理出来进行调用,这里只是关个例子来调用js的用法:

      pycharm直接运行js代码,需要环境支持,首先要安装node.js,具体安装可参考https://blog.youkuaiyun.com/bestyellow/article/details/119820509,我们准备一段js代码:

console.log(GenCheckKey(8));
console.log(getGroupNum('6-15双,13-25单'));
//生成随机数
function GenCheckKey(nLen)
{
    var Ret = "";
    var Code = "0123456789";
    for (var i = 0; i < nLen; i++)
    {
        var c = Code.charAt(Math.random() * (Code.length - 1)); // 随机获取字符
        Ret += c;
    }
    return Ret;
}
//分解类似于6-15双,13-25单这样的数字为数组
function getGroupNum(nums)
{
    var ret = [];
    var t1 = nums.split(',');
    for (var i = 0; i < t1.length; i++)
    {
        var fws = t1[i];
        if (isNaN(fws))
        {
            var isd = 0; var iss = 0;
            if (fws.indexOf('单') > 0) { isd = 1; fws = fws.replace('单', ""); } else if (fws.indexOf('双') > 0) { iss = 1; fws = fws.replace('双', ""); }
            var zfw = fws.split('-');
            if (zfw.length == 2)
            {
                if (!isNaN(zfw[0]) && !isNaN(zfw[1]))
                {
                    var n1 = parseInt(zfw[0]);
                    var n2 = parseInt(zfw[1]);
                    for (var j = n1; j <= n2; j++)
                    {
                        if (isd == 0 && iss == 0 || isd == 1 && (j % 2) == 1 || iss == 1 && (j % 2) == 0)
                        {
                            ret[ret.length] = parseInt(j);
                        }
                    }
                }
            }
        }
        else
        {
            ret[ret.length] = parseInt(fws);
        }
    }
    return ret;
}

保存文件demo3.js,然后node.js直接运行看代码是束正常

结果为:

注释掉

后我们新建一个 demo3.py文件:

#调用js运行测试
import execjs  #需安装PyEexcjs

'加载本地js文件'
with open('demo3.js', 'r', encoding='utf-8') as f:
    ctx = execjs.compile(f.read())

thenum = ctx.call('GenCheckKey', 8)  # 调用函数,生成随机数,参数为长度
nums=ctx.call('getGroupNum','6-15双,18-25')
print("js生成的随机数为:"+thenum)
print("“6-15双,18-25”分解为:{}".format(nums))

运行前我们要先安装PyExecJS 结果最后运行demo3.py看结果和js测试调用的结果一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值