那些坑儿系列--Python--1--爬虫&pyv8--后续

看了js2py的安装过程,该模块依赖pyjsparser

所以就萌发了直接用parser的欲望。

放出代码:

from pyjsparser import PyJsParser
def getJsVar(argJsSt):
	'''获取JS字符串中的变量值,获取顶级变量值'''
	p=PyJsParser()
	r={}
	try:
		pp = p.parse(argJsSt)
		print(pp)
	except Exception as e:
		return r
	for d in pp["body"]:
		if d["type"] == "VariableDeclaration":
			if d["declarations"][0]["init"] is not None:
				r[d["declarations"][0]["id"]["name"]]=d["declarations"][0]["init"]["value"]
	return r

getJsVar 参数为JS字符串,返回顶级变量s的字典。

可能存在的问题:

1 argJsSt 必须是正确的JS字符串,如果字符串内容不符合JS规范,则返回{}

2 如果顶级变量重复赋值(其实不符合js规范,比如 var a=1 ; var a=2),则由于字典特性,取后面一个值。

3 由于只取变量申明中的值,所以只有初始值(比如 var a=1 ; a = 2),只会取出a:1 ,var a ;a=1 则不取a。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值