gpt4 book ai didi

node.js - 在 Node.js 中进行嵌套请求调用

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:39 26 4
gpt4 key购买 nike

正如标题所示,我正在尝试进行嵌套请求调用,其中第一个请求从页面的 html 中获取 img src,然后将该 src 传递到另一个请求中。

var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');

async function main() {
for (let i = 1; i < 1061; i++) {
let url = `https://manuals.co/workshop/volkswagen/corrado/volkswagen-corrado-1990-1994-workshop-manual/5874057/${i}`

await getSrc(url, i)
}
}

async function getSrc(uri, j) {
request(uri, function(error, response, html) {
let $ = cheerio.load(html)
const imgSrc = $('.bi.x0.y0.w0.h1').attr("src")
console.log(imgSrc)
request(imgSrc).pipe(fs.createWriteStream(`images/test-${j}.png`)).on('close', function() {
console.log(`Completed image number: ${j}`)
})
})
}

main()

当我运行此命令时,“imgSrc”作为“未定义”记录到控制台,并且收到错误:

Error: undefined is not a valid uri or options object.

我尝试按如下方式使用等待:

const imgSrc = await $('.bi.x0.y0.w0.h1').attr("src")

在这种情况下,我在该行收到“意外标识符”错误。我还将指出,当我单独运行 getSrc 函数(而不是在 for 循环中)时,它会按预期工作。我不知道是什么导致它在放入循环时破裂。

我对 Node.js 和异步编程非常陌生,所以我正在寻找一个可以帮助我理解这些东西工作方式的解决方案。

最佳答案

尝试同步运行它。删除 asyncawait 并查看是否仍然收到该错误。如果您仍然这样做,则可能 $('.bi.x0.y0.w0.h1').attr("src") 确实返回未定义。

关于node.js - 在 Node.js 中进行嵌套请求调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51909912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com