javascript - 如何使用 apify sdk 使 puppeteer 无头运行?
问题描述
我正在尝试使用 apify sdk 抓取页面的内容。这也适用于以下代码。但是,如何像 puppeteer.launch({headless: true}) 一样强制使用 Apify SDK 的无头模式?
供您参考的代码:
async function scrape(number) {
let output = { links: [], title: [], content: [] };
const URL = "https://somepage/";
process.env.APIFY_LOCAL_STORAGE_DIR = '/someappfolder/apify_storage/run_' + number;
const requestQueue = await Apify.openRequestQueue(number);
await requestQueue.addRequest({ url: URL });
const pseudoUrls = [new Apify.PseudoUrl(URL + "[.*]")];
const crawler = new Apify.PuppeteerCrawler({
requestQueue,
handlePageFunction: async ({ request, page }) => {
output.links.push(request.url);
output.title.push(await page.title());
output.content.push((await page.content()).length);
var save = { url: request.url, title: await page.title(), content: (await page.content()).length };
//sendToAirtable(save);
console.log(`URL: ${request.url}`);
await Apify.utils.enqueueLinks({
page,
selector: 'a',
pseudoUrls,
requestQueue,
});
},
maxRequestsPerCrawl: 10,
maxConcurrency: 10,
minConcurrency: 2,
});
await crawler.run();
return output;
};
解决方案
添加与https://sdk.apify.com/docs/typedefs/launch-puppeteer-options#docsNavlaunchPuppeteerOptions: { headless: true }
相同的级别requestQueue
推荐阅读
- java - Java - 检查 HashMap 的值是否正确复制到 ArrayList 的测试返回 false
- python - 除非没有例外,否则如何尝试打开文件?
- java - 在Java中模糊匹配一个字符串与另一个字符串的开头
- android - Firebase Firestore:实例已初始化后无法调用 useEmulator()
- r - 将 dfs 与 dplyr 例如 inner_join 连接时,仅从一个 df 匹配 cols
- regular-language - 为什么我们用抽引理来证明语言的非正则性?为什么?
- github - 在 google colab 中使用 github CLI 时出现“无法读取用户名错误”
- ios - 将 Firebase 添加到 Flutter 应用后,iOS 构建失败
- python - 如何获取当前打开的网络浏览器选项卡的 URL
- assembly - 当我在 MIPS 中移动堆栈指针时实际发生了什么?我真的释放了内存空间吗?