Puppeteer - RequestInterception: Unterschied zwischen den Versionen
Aus Wikizone
Steff (Diskussion | Beiträge) |
Steff (Diskussion | Beiträge) |
||
| Zeile 14: | Zeile 14: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
| − | page.on('request', | + | 'use strict'; |
| − | + | ||
| − | + | const puppeteer = require('puppeteer'); | |
| − | + | ||
| − | + | (async () => { | |
| − | + | const browser = await puppeteer.launch(); | |
| − | + | const page = await browser.newPage(); | |
| − | + | await page.setRequestInterception(true); | |
| − | + | page.on('request', request => { | |
| + | if (request.resourceType() === 'image') { | ||
| + | request.abort(); | ||
| + | } else { | ||
| + | request.continue(); | ||
| + | } | ||
| + | }); | ||
| + | await page.goto('https://news.google.com/news/'); | ||
| + | await page.screenshot({path: 'news.png', fullPage: true}); | ||
| + | |||
| + | await browser.close(); | ||
| + | })(); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Aktuelle Version vom 12. September 2022, 19:34 Uhr
Der RequestInterceptor klinkt sich quasi ein, wenn die ganzen Resourcen der Webpage nachgeladen werden. So kann man direkt eingreifen. Der Ladevorgang der Resourcen geht erst weiter, wenn request.continue() oder request.abort() aufgerufen wird.
Snippets[Bearbeiten]
page.on('request', (request) => {
if (/\.(png|jpg|jpeg|gif|webp)$/i.test(request.url)) {
request.abort();
} else if (request.url.startsWith(defaults.URL_INSTAGRAM_GRAPHQL_QUERY)) {
query_id = request.url.split('=')[1].split('&')[0];
} else {
request.continue();
}
});
'use strict';
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', request => {
if (request.resourceType() === 'image') {
request.abort();
} else {
request.continue();
}
});
await page.goto('https://news.google.com/news/');
await page.screenshot({path: 'news.png', fullPage: true});
await browser.close();
})();