python爬虫和js之间的传参,数据类型如何处理?
python代码如下
value=“(!+[]+!![]+[])”
with open("get_Cookie.js", "r") as f:
data = execjs.compile(f.read()).call("setCookie",value)
print(data)
js代码如下
function setCookie(value){
cookie=escape(value).replace(/+/g,%2B)
return cookie
}
python运行结果
print的值是%28%21%2B%5B%5D(以下被限制)
js运行结果
2
刚开始学,只知道是转码问题,python的str和js的str不一样,但是不知道怎么处理这个转码
python函数输出为2
问题描述的不是很清楚
我也用过execjs,完全没有问题,字符串都是统一的,你读文件的时候没有写编码,加上encoding="utf-8"试试!
下面代码是我之前写的案例,一点问题都没有!
博客链接在这:https://guanzhu-aniu.blog.csdn.net/article/details/123500499
import execjs
#可以安装node.js,然后用它运行,也可以用windows默认的js执行环境
#获取js执行环境,环境名可以指定
# node = execjs.get()
#打印windows默认的js执行环境
print(execjs.get().name)
#编译js代码
ctx = execjs.compile(open('./log.js','r',encoding='utf-8').read())
#执行函数法一:
"fn('我是阿牛!')"
sign = ctx.eval("fn('我是阿牛!')") #eval方法中,整个函数调用包含在字符串中
print(sign)
#执行函数法二:
sign = ctx.call('fn','我是阿牛!') #call方法中,第一个参数是函数名(写成字符串),后面接参数
print(sign)
#执行js代码
i = execjs.eval('""+ new Date().getTime()')
print(i)
print(i+str(execjs.eval('parseInt(10 * Math.random())')))
js
function fn(m){
return m;
}
有帮助的话采纳一下哦!