use*_*739 24 cookies puppeteer
我必须两次请求相同的网页才能在第一个请求中获取 cookie,并在以下示例的第二个请求中使用它。
有人能告诉我在一个 puppeteer 会话中保存 cookie 并在另一个会话中加载它的代码,这样就不需要在第二个会话中两次请求相同的网页吗?谢谢。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2');
await page.goto('https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2');
const linkHandlers = await page.$x("//div[@id='enhancers']//a[@data-track-event='Table See-All']");
if (linkHandlers.length > 0) {
const [response] = await Promise.all([
page.waitForResponse(response => response.url().includes('/gene/api/data/Enhancers')),
linkHandlers[0].click()
]);
const resp_text = await response.text();
console.log(resp_text);
} else {
throw new Error("Link not found");
}
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
Tho*_*orf 38
要保存 cookie,您可以使用功能page.cookies。要重复使用 cookie,您可以使用该page.setCookies功能。
将 cookie 保存到磁盘
const fs = require('fs').promises;
// ... puppeteer code
const cookies = await page.cookies();
await fs.writeFile('./cookies.json', JSON.stringify(cookies, null, 2));
Run Code Online (Sandbox Code Playgroud)
这将读取当前 URL 的 cookie 并通过JSON.stringify和将它们保存到磁盘fs.writeFile。
重复使用 cookie
const fs = require('fs').promises;
// ... puppeteer code
const cookiesString = await fs.readFile('./cookies.json');
const cookies = JSON.parse(cookiesString);
await page.setCookie(...cookies);
Run Code Online (Sandbox Code Playgroud)
要重复使用 cookie,请通过fs.readFile. 然后通过JSON.parse. 之后,您必须调用该page.setCookie函数。由于该函数将 cookie 作为参数(而不是作为 cookie 的一个数组参数),因此我们依赖扩展运算符,它允许setCookie使用给定的cookies数组作为单个参数调用该函数。
小智 6
您可以按照下面的代码示例进行操作:
const puppeteer = require('puppeteer');
const fs = require('fs').promises; //for working with files
//save cookie function
const saveCookie = async (page) => {
const cookies = await page.cookies();
const cookieJson = JSON.stringify(cookies, null, 2);
await fs.writeFile('cookies.json', cookieJson);
}
//load cookie function
const loadCookie = async (page) => {
const cookieJson = await fs.readFile('cookies.json');
const cookies = JSON.parse(cookieJson);
await page.setCookie(...cookies);
}
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await loadCookie(page); //load cookie
await page.goto('https://example.com');
await saveCookie(page); //save cookie
await browser.close();
})();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29733 次 |
| 最近记录: |