尝试从下面的链接获取(使用 npm node-fetch)html 时出现以下错误:
Failed to fetch page: { FetchError: request to https://www1.nseindia.com/marketinfo/companyTracker/compInfo.jsp?symbol=TCS&series=EQ failed, reason: read ECONNRESET at 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}
。
最佳答案
我会使用一些基于现代 promise 的包来完成这项工作。有些是 got
、axios
等。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);
});
关于node.js - 在 Node.js 中获取 URL 时出现 ECONNRESET 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591058/