node.js - 如何在node.js和nightmare.js中使用超出其范围的变量(网络抓取)

标签 node.js web-scraping nightmare

如何在node.js和nightmare.js中使用超出其范围的变量(网络抓取)
当我尝试使用await范围之外的变量“downloadLink”时,它以未定义的形式返回。

app.post('/search', function(req, res){
        const val = req.body.searchText;
        
        const nightmare = new Nightmare({ 
            show: true 
        });

        
        (async function() {

            const downloadLink = await nightmare
        
                .viewport(1200, 700)
                .goto('https://google.com/')
                .insert('#selector0')
                .click('#selector1')
                .click('#selector2')
                .evaluate(() => document.querySelector('#selector3').href)
                .end()
            
                .catch((err) => {
                    console.log(err)
                })
            console.log('download link ' + downloadLink) //this line prints a string
        
        })();

        console.log('download link ' + downloadLink) //this line returns undefined
    })
我可以在其范围之外使用“downloadLink”并使用后一行代码进行打印吗?

最佳答案

Express支持异步处理程序,因此您可以像这样重构您的方法。无需将代码置于异步IIFE下。

app.post('/search', async function(req, res){
    try {
        const val = req.body.searchText;
    
        const nightmare = new Nightmare({ 
            show: true 
        });
        
        const downloadLink = await nightmare
            .viewport(1200, 700)
            .goto('https://google.com/')
            .insert('#selector0')
            .click('#selector1')
            .click('#selector2')
            .evaluate(() => document.querySelector('#selector3').href)
            .end()
        

        console.log('download link ' + downloadLink);
    } catch (err) {
        console.error(err.message);
    }
});

关于node.js - 如何在node.js和nightmare.js中使用超出其范围的变量(网络抓取),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63304720/

相关文章:

excel - 使用vba抓取网页

node.js - Nightmare 般的网上抓取如何实际处理表格并提交

javascript - 使用reduce和Promises在Nightmare js中循环

node.js - 升级nodejs centos 6.9

node.js - Nools 和流口水

python - 有没有办法使用 BeautifulSoup 将数据从列表正确转换为 CSV 文件?

javascript - NightmareJS(电子浏览器)是否兼容Firebase函数?

node.js - API.ai/Dialogflow 基本文本请求不起作用

javascript - 如何使用 vue.js 将服务器端数据绑定(bind)到某些 html 元素

python - 如何从 URL 中找到 .m3u8 文件并下载它