【发布时间】:2020-07-10 21:55:59
【问题描述】:
我正在尝试使用 puppeteer 和 Google Cloud Functions 在 UberEats 上自动订购食物。但是填写表单位置并单击下一步将不起作用。我目前正在使用 Node.js 8 和 puppeteer 版本 2.1.1。
exports.main = (req, res) => {
const puppeteer = require('puppeteer');
let selector = 'button[class="c1 cg ch ci bb bc bd cj ch az ao aq bu aj c1 ck cl cm cn co"]';
async function run () {
try {
const browser = await puppeteer.launch({args: ['--no-sandbox']});
const page = await browser.newPage();
await page.goto("https://ubereats.com/nl");
await page.waitFor('input[id="location-typeahead-home-input"]');
await page.evaluate(() => {
document.querySelector('input[id="location-typeahead-home-input"]').value = "Leuven";
document.querySelector('selector').click();
});
await page.waitForSelector('div[class="f5 bc bd be ew bf b1 he"]');
let element = await page.evaluate(() => {
return document.querySelector('h2').innerText;
})
browser.close();
return element;
} catch (e) {
return e;
}
}
run()
.then(el => {
res.set('Content-Type', 'text/html');
res.status(200).send(el);
})
.catch(err => {
console.error(err);
res.status(500).send("An Error occured" + err);
})
};
网页抓取网页工作正常。运行此代码不会返回任何错误,只会返回一个空对象。
【问题讨论】:
-
你试过用他们的api吗?
标签: node.js forms web-scraping google-cloud-functions puppeteer