我正在尝试使用木偶操纵者从网页上抓取一些数据。我创建了整个脚本并在模拟器中运行它,在模拟器本地一切正常。当我将相同的东西部署到云并运行它时,puppeteer 找不到元素并结束执行。
我的代码:
console.log('Scraping LINKS');
const browser = await getBrowser();
const page = await preparePage(browser, `URL`);
console.log('Page opened');
const handle = await page.$('.sloupec_s_inzeratama');
console.log('Finding handle');
if (!handle) {
console.log('Can not find "sloupec_s_inzeratama"');
}
if (handle) {
// Do something else
}
从控制台记录为屏幕截图:
我尝试过但没有帮助:
注释掉所有木偶操作者的启动参数
将加载策略从“domcontentloaded”更改为“load”或“networkidle2”
等待页面.goto(url, { 等待:'domcontentloaded', });
在尝试查找选择器之前使用了waitForSelector。 (刚刚超时)
显然,模拟器中发生的情况与云函数中发生的情况存在一些差异。但我无法说出有什么区别以及我应该如何调试它。所以非常欢迎任何建议。
经过一段时间的调试后,我将
page.content()
添加到控制台日志中,以验证数据与本地主机上的数据相同。我发现 Recaptcha V3 将我的服务器检测为 BOT,并禁止其继续。不过,我的模拟器仍然可以正常工作。
我总是尝试慢慢抓取而不伤害某人的服务器,但这仍然意味着你的木偶操作者可以被检测到,以防有人遇到同样的问题,验证你的机器人只是没有被检测到:)