在node.js中获取URL时出现ECONNRESET错误

问题描述 投票:0回答:2

[尝试从下面的链接获取html时出现以下错误:

无法获取页面:{FetchError:请求https://www1.nseindia.com/marketinfo/companyTracker/compInfo.jsp?symbol=TCS&series=EQ失败,原因:读取ECONNRESET在ClientRequest

我正在使用以下代码段:

const DomParser = require('dom-parser');
const parser = new DomParser();
const fetch = require('node-fetch');

router.get('/info', (req,res,next)=> {
var url= "https://www1.nseindia.com/marketinfo/companyTracker/compInfo.jsp?symbol=TCS&series=EQ";
fetch(url).then(function(response) {
    // When the page is loaded convert it to text
    return response.text()
}).then(function(html) {
    // Initialize the DOM parser

    // Parse the text
    var doc = parser.parseFromString(html, "text/html");

    // You can now even select part of that html as you would in the regular DOM 
    // Example:
    // var docArticle = doc.querySelector('article').innerHTML;

    console.log(doc);
}).catch(function(err) {  
    console.log('Failed to fetch page: ', err);  
});

});

响应在显示错误之前已经被控制台记录了几次,现在每次调用/ info时都会抛出错误。

我已经在repl在线编辑器中尝试了该代码段。它返回Promise {pending}

node.js express dom fetch
2个回答
0
投票

据我所知,您不能在NodeJS中使用fetch。您需要依靠不同的方法。我个人通常使用Axios。

还检查代码的这一部分是否确实返回了一个承诺:

return response.text()

链接另一个.then之前。

https://www.valentinog.com/blog/http-js/


0
投票

我将使用一些基于现代的promise的软件包来完成这项工作。其中一些是gotaxios等。node-fetch最近发布于8个月前。它可能无法处理编码或压缩。

这里是使用axios的示例。

const axios = require("axios");
const DomParser = require("dom-parser");
const parser = new DomParser();

var url =
  "https://www1.nseindia.com/marketinfo/companyTracker/compInfo.jsp?symbol=TCS&series=EQ";
axios(url)
  .then(response => response.data)
  .then(html => {
    // Initialize the DOM parser

    // Parse the text
    var doc = parser.parseFromString(html, "text/html");

    // You can now even select part of that html as you would in the regular DOM
    // Example:
    // var docArticle = doc.querySelector('article').innerHTML;

    console.log(doc);
  })
  .catch(function(err) {
    console.log("Failed to fetch page: ", err);
  });

© www.soinside.com 2019 - 2024. All rights reserved.