【发布时间】:2020-08-22 19:10:59
【问题描述】:
假设我想从搜索“hi google”中抓取结果(只是一个示例)。我正在使用 Puppeteer 和 Node.js 来抓取。我使用以下代码:
const puppeteer = require('puppeteer');
scrape = async function () {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto("https://www.google.com/search?q=hi+google&rlz=1C1CHBF_enUS879US879&oq=hi+google&aqs=chrome..69i57j0l3j46j69i60l3.1667j0j7&sourceid=chrome&ie=UTF-8", { waitUntil: "networkidle2" });
await page.setViewport({ width: 1366, height: 663 });
await page.waitForSelector('.xpd');
let data = await page.evaluate(() => {
return document.querySelectorAll('.xpd')[16];
});
await browser.close();
return data;
}
scrape()
.then(function(result) {
console.log(result);
})
当浏览器启动时,它会立即进入一个 reCAPTCHA 页面: 有没有办法超越这个问题?我在网上做了一些研究,但这些结果要么是 1. 非常理论,我不知道如何在我的代码中实现这些结果,要么 2. Python 解决方案,我不确定其中一些解决方案的外观如何傀儡师。我遇到的最有用的结果是随机定时抓取以使请求看起来像人类一样,但正如您所见,即使只检索一个数据元素也无法正常工作,它只会立即将您带到 reCAPTCHA 页面。
谢谢。
【问题讨论】:
-
设置你的浏览器用户代理
-
@0m3r 感谢您的建议。我试过了,但现在控制台中的输出是
{},而不是所需的搜索结果。我什至使用了 puppeteer-extra 但它仍然无法修复。
标签: web-scraping puppeteer recaptcha google-search