问题:
通过execjs执行JavaScript代码,虽然JavaScript代码没有语法错误,但是python解释器抛出异常IndexError: list index out of range、语法错误
抛出异常语法错误的解决步骤:
1.根据自己电脑的配置下载Node.js 网址:下载 | Node.js
2.下载完毕并安装后,打开命令提示符输入:path 查看环境变量中是否存在npm
3.在命令提示符中输入 npm i jsdom -g 并执行,等待文件下载完毕后重启电脑即可
抛出异常IndexError: list index out of range的解决步骤:
需要更改源代码(并不推荐,但是还没有找到更好的办法,这里引用
硌手的虫子https://blog.csdn.net/u012552769 的文章:通过execjs模块执行js代码报编码错误_execjs list_硌手的虫子的博客-CSDN博客)
找到execjs模块下的_external_runtime.py文件,在下面这个语句的最后添加encoding =‘utf-8’
更改前:
p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=self._cwd, universal_newlines=True)
更改后:
p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=self._cwd, universal_newlines=True, encoding='utf-8')