我正在尝试使用 puppeteer 抓取某个网站的一些初创公司数据,当我尝试导航到下一页时,cloudflare 等待屏幕出现并中断抓取。我尝试更改IP,但还是一样。有没有办法用 puppeteer 绕过它。
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
});
const page = await browser.newPage();
page.setDefaultNavigationTimeout(0);
let links = [];
// initial page
await page.goto(`https://www.startupranking.com/top/india`, {
waitUntil: "networkidle0",
});
// looping through the url to different pages
for (let i = 2; i <= 7; i++) {
if (i === 3) {
console.log("waiting");
await page.waitFor(20000);
console.log("waited");
}
const onPageLinks = await page.$$eval("tr .name a", (arr) =>
arr.map((cur) => cur.href)
); …Run Code Online (Sandbox Code Playgroud) 我正在编写一个机器人,在任务完成后我试图用它来抓取 reCAPTCHA 令牌。我正在尝试使用:
await page.evaluate(() => document.getElementById('recaptcha-token').value)
Run Code Online (Sandbox Code Playgroud)
验证码加载到页面后,但是每次我都会收到相同的错误:Uncaught (in promise) Error: Evaluation failed: TypeError: Cannot read property 'value' of null。
我认为此错误部分是由于我尝试获取的元素属于隐藏类型而引起的:
<input type="hidden" id="recaptcha-token value="[very long string of letters and numbers]">
Run Code Online (Sandbox Code Playgroud)
我该如何绕过这个?