如何使用jquery 2.1.3解析node.js中的html?
我正在尝试将node.js与jquery2.1.3和jsdom4.0.4结合使用来进行web抓取。但是我在运行jquery模块时遇到了问题。这是密码如何使用jquery 2.1.3解析node.js中的html?,jquery,node.js,jsdom,Jquery,Node.js,Jsdom,我正在尝试将node.js与jquery2.1.3和jsdom4.0.4结合使用来进行web抓取。但是我在运行jquery模块时遇到了问题。这是密码 // Load the http module to create an http server. var $ = require('jquery')(require("jsdom").jsdom().parentWindow); var http = require('http'); var request = require("request
// Load the http module to create an http server.
var $ = require('jquery')(require("jsdom").jsdom().parentWindow);
var http = require('http');
var request = require("request");
// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (req, res) {
res.writeHead(200, {"Content-Type": "text/plain"});
var uri = "http://www.forever21.com/shop/ca/en/men-tees-tanks";
request({
uri: uri,
}, function(error, response, body) {
if (error) {
return console.error(error);
}
var f = $(body);
res.write(body);
res.end();
});
});
// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);
// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");
我得到的错误是:
C:\Users\ME\Desktop\Apps\Waerl\node_modules\jquery\dist\jquery.js:28
if ( !w.document ) {
^
TypeError: Cannot read property 'document' of undefined
at module.exports (C:\Users\ME\Desktop\Apps\Waerl\node_modules\jquery\dist
\jquery.js:28:12)
at Object.<anonymous> (C:\Users\ME\Desktop\Apps\Waerl\server.js:2:26)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
C:\Users\ME\Desktop\Apps\Waerl\node\u modules\jquery\dist\jquery.js:28
如果(!w.document){
^
TypeError:无法读取未定义的属性“document”
在module.exports(C:\Users\ME\Desktop\Apps\Waerl\node\u modules\jquery\dist
\jquery.js:28:12)
at对象。(C:\Users\ME\Desktop\Apps\Waerl\server.js:2:26)
在模块处编译(Module.js:460:26)
在Object.Module.\u extensions..js(Module.js:478:10)
在Module.load(Module.js:355:32)
在Function.Module.\u加载(Module.js:310:12)
位于Function.Module.runMain(Module.js:501:10)
启动时(node.js:129:16)
在node.js:814:3
有人知道如何解决这个问题吗
感谢您将jsdom 4.0.0从非标准parentWindow添加到文档的标准defaultView属性
试试这个:
// Load the http module to create an http server.
var $ = require('jquery')(require("jsdom").jsdom().defaultView);
var http = require('http');
var request = require("request");
// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (req, res) {
res.writeHead(200, {"Content-Type": "text/plain"});
var uri = "http://www.forever21.com/shop/ca/en/men-tees-tanks";
request({
uri: uri,
}, function(error, response, body) {
if (error) {
return console.error(error);
}
var f = $(body);
res.write(body);
res.end();
});
});
// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);
// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");