Puppeteer在本地服务器上正确地从google上搜刮新闻,但在heroku上却没有。

问题描述 投票:1回答:1

我已经添加了所需的构建包。Heroku日志中也没有显示任何错误。本地部署的应用程序完全正常工作,并收集所需的新闻,但在heroku上,页面只是刷新,没有显示任何内容。

app.post("/news",function(req,res){
var pla= req.body.place;
var url='https://www.google.com/search?q=covid+19+'+pla+'&sxsrf=ALeKk02SupK-SO625SAtNAmqA5CHUj5xjg:1586447007701&source=lnms&tbm=nws&sa=X&ved=2ahUKEwikieXS19voAhXAxzgGHV5bCcQQ_AUoAXoECBwQAw&biw=1536&bih=535';

(async () => {
    const browser = await puppeteer.launch({args: ['--no-sandbox']});
    const page = await browser.newPage();

    await page.goto(url);

    var data = await page.evaluate(() =>
        Array.from(document.querySelectorAll('div.g'))
            .map(compact => ({
                headline: compact.querySelector('h3').innerText.trim(),
                img: compact.querySelector("img") === null ? 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/No_image_3x4.svg/1280px-No_image_3x4.svg.png' : compact.querySelector("img.th.BbeB2d").src,
                url: compact.querySelector("h3.r.dO0Ag>a").href,
                source: compact.querySelector("div.gG0TJc>div.dhIWPd>span.xQ82C.e8fRJf").innerText.trim(),
                time:  compact.querySelector("div.gG0TJc>div.dhIWPd>span.f.nsa.fwzPFf").innerText.trim(),
                desc : compact.querySelector("div.st").innerText.trim()
            }))
    )

    console.log(data);
    res.render('news.ejs',{data: data});
    await browser.close();
})();
});
node.js heroku localhost puppeteer
1个回答
0
投票

我建议你添加 '--disable-setuid-sandbox' 标志到你的木偶人发射命令。

const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});

过去我遇到过一些问题 如果我没记错的话,旗子是有帮助的。

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