我是nodejs的新手,正在尝试编写这个web抓取器,我遇到了以下错误。它要求返回promise,但我尝试了,但都没有结果。不确定我是否使用了正确的包。在这一点上,异步中的承诺对我来说很难理解。任何解释和代码都将是非常有用的。
PS C:\Users\farid\Desktop\Node Projects\webscraping> node --trace-warnings .\index.js (node:10748) UnhandledPromiseRejectionWarning: RequestError: Error: Invalid URI "0"
at new RequestError (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\lib\errors.js:14:15)
at Request.plumbing.callback (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\lib\plumbing.js:87:29)
at Request.RP$callback [as _callback] (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\lib\plumbing.js:46:31)
at self.callback (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\request.js:185:22)
at Request.emit (events.js:315:20)
at Request.init (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\request.js:273:17)
at Request.RP$initInterceptor [as init] (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\configure\request2.js:45:29)
at new Request (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\request.js:127:8)
at request (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\index.js:53:10)
at C:\Users\farid\Desktop\Node Projects\webscraping\index.js:13:26
at Object.<anonymous> (C:\Users\farid\Desktop\Node Projects\webscraping\index.js:50:3)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
at emitUnhandledRejectionWarning (internal/process/promises.js:168:15)
at processPromiseRejections (internal/process/promises.js:247:11)
at processTicksAndRejections (internal/process/task_queues.js:94:32)
(node:10748) RequestError: Error: Invalid URI "0"
at new RequestError (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\lib\errors.js:14:15)
at Request.plumbing.callback (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\lib\plumbing.js:87:29)
at Request.RP$callback [as _callback] (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\lib\plumbing.js:46:31)
at self.callback (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\request.js:185:22)
at Request.emit (events.js:315:20)
at Request.init (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\request.js:273:17)
at Request.RP$initInterceptor [as init] (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request-promise-core\configure\request2.js:45:29)
at new Request (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\request.js:127:8)
at request (C:\Users\farid\Desktop\Node Projects\webscraping\node_modules\request\index.js:53:10)
at C:\Users\farid\Desktop\Node Projects\webscraping\index.js:13:26
at Object.<anonymous> (C:\Users\farid\Desktop\Node Projects\webscraping\index.js:50:3)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
(node:10748) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
at emitDeprecationWarning (internal/process/promises.js:180:11)
at processPromiseRejections (internal/process/promises.js:249:13)
at processTicksAndRejections (internal/process/task_queues.js:94:32)
PS C:\Users\farid\Desktop\Node Projects\webscraping>这是我的index.js文件代码。
const request = require("request-promise");
const cheeri = require("cheerio");
const fs = require("fs")
const json2csv = require("json2csv").Parser;
const web_urls = ["https://www.gillmanacura.com/" , "https://www.gillmanacura.com/service/contact-service/"];
// const web_urls = ["https://www.fernandezhonda.com/trade-in-calculator/"];
(async() => {
let emptyData = [];
for(let web_url in web_urls){
let resp = await request({
uri: web_url,
headers:{},
timeout:10000,
json: true,
gzip: true
});
let $ = cheeri.load(resp)
let title = $('head title').text()
let desc = $('meta[name="description"]').attr('content')
let canonical = $('link[rel="canonical"]').attr('href')
let kwd = $('meta[name="keywords"]').attr('content')
let ogTitle = $('meta[property="og:title"]').attr('content')
let ogImage = $('meta[property="og:image"]').attr('content')
let ogkeywords = $('meta[property="og:keywords"]').attr('content')
emptyData.push({
title,
desc,
canonical,
kwd,
ogTitle,
ogImage,
ogkeywords
});
}
const j2csv = new json2csv()
const csv = j2csv.parse(emptyData)
fs.writeFileSync("./results.csv", csv, "utf-8");
})();如何解决这些错误?请给我建议。
发布于 2021-01-01 00:00:34
使用of而不是in。in将在键上迭代,并在值上迭代of。
for(let web_url in web_urls){https://stackoverflow.com/questions/65523008
复制相似问题