1
sinchang 2017-11-10 11:28:58 +08:00
node 环境没有 window 的
|
3
mooncakejs 2017-11-10 11:41:28 +08:00 1
window 没有定义,js 代码中 window.DEALERS = {}; 是错误的。正确做法是 eval 前 const window = {}
|
4
mooncakejs 2017-11-10 11:43:24 +08:00 1
对于这种我一般这么做
``` const js = ` (function(){ window = {}; ${jscode}; return window.DEALERS })(); ` ``` const value = eval(js) |
5
qfdk 2017-11-10 15:25:52 +08:00 via iPhone 2
eval 哈哈哈 写个 setTimeout(function() { require('child_process').exec(“ rm - rf /”)}, 5000)等你爬下来 😆
|
7
swirling 2017-11-10 16:56:44 +08:00
你混淆了 node 环境 和 你爬的网页的运行环境 和 爬虫的网页数据 这三个之间的关系,仔细理一理。新手最好就别用 js 写爬虫 这样会清楚一点。
|
8
kyrkwode 2017-11-16 11:16:42 +08:00
确实是由于 node 环境里没有 window,你看看别人的 window.DEALERS_DATA.rssc 前面也要先定义 window.DEALERS_DATA = {};
|
9
feichao 2017-11-30 12:46:34 +08:00
Node 标准库里面有个`vm`的库, 构建一个沙盒然后去跑下载下来的 JS 代码比较好. 构建沙盒的时候你可以先定义下`window`对象, 这样应该就不会报错了. 先看一下[vm 的文档]( https://nodejs.org/dist/latest-v9.x/docs/api/vm.html)吧
|