我的客户突然遇到使用Node.js进行HTML scraper工作的问题。我已经在原因上盘旋,发现它位于Request模块中。这让我编写了一个小型测试应用程序,它只通过Request模块获取给定URL的HTML。像这样:
var request = require('request');
request('https://www.politi.dk/da/ompolitiet/jobipolitiet/ledige_stillinger/ledigestillinger', function(err, res, body){
if(err){
console.log(err);
} else {
console.log('statusCode:', res.statusCode);
console.log('statusMessage:', res.statusMessage);
}
});
上面的例子不起作用,因为我在运行应用程序时遇到以下错误:
{ Error: socket hang up
at TLSSocket.onHangUp (_tls_wrap.js:1137:19)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
at TLSSocket.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
code: 'ECONNRESET',
path: null,
host: 'www.politi.dk',
port: 443,
localAddress: undefined }
但是,如果我将URL更改为任何其他URL,则可以使用以下内容:
statusCode: 200
statusMessage: OK
我已尝试在politi.dk域上传递其他网址,但这也无效。因此,当通过Request模块请求页面时,我可以得出结论,该域存在问题。奇怪的是,它直到最近才起作用。什么可能导致这个问题?可以对politi.dk的服务器进行一些设置更改,这会导致此问题吗?我发现很难在谷歌上找到任何有用的东西。我在SO上找到了nodejs-what-does-socket-hang-up-actually-mean线程,这是完全相同的问题。但答案对我没什么帮助。
任何?