@crawlee/puppeteer 4.0.0-beta.5 → 4.0.0-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -5
- package/internals/enqueue-links/click-elements.d.ts +29 -10
- package/internals/enqueue-links/click-elements.d.ts.map +1 -1
- package/internals/enqueue-links/click-elements.js +43 -17
- package/internals/enqueue-links/click-elements.js.map +1 -1
- package/internals/puppeteer-crawler.d.ts +52 -22
- package/internals/puppeteer-crawler.d.ts.map +1 -1
- package/internals/puppeteer-crawler.js +50 -13
- package/internals/puppeteer-crawler.js.map +1 -1
- package/internals/puppeteer-launcher.d.ts +2 -0
- package/internals/puppeteer-launcher.d.ts.map +1 -1
- package/internals/utils/puppeteer_request_interception.d.ts.map +1 -1
- package/internals/utils/puppeteer_request_interception.js +2 -2
- package/internals/utils/puppeteer_request_interception.js.map +1 -1
- package/internals/utils/puppeteer_utils.d.ts +9 -26
- package/internals/utils/puppeteer_utils.d.ts.map +1 -1
- package/internals/utils/puppeteer_utils.js +51 -52
- package/internals/utils/puppeteer_utils.js.map +1 -1
- package/package.json +13 -9
- package/tsconfig.build.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
<small>A web scraping and browser automation library</small>
|
|
10
10
|
</h1>
|
|
11
11
|
|
|
12
|
+
<p align=center>
|
|
13
|
+
<a href="https://trendshift.io/repositories/5179" target="_blank"><img src="https://trendshift.io/api/badge/repositories/5179" alt="apify%2Fcrawlee | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
12
16
|
<p align=center>
|
|
13
17
|
<a href="https://www.npmjs.com/package/@crawlee/core" rel="nofollow"><img src="https://img.shields.io/npm/v/@crawlee/core.svg" alt="NPM latest version" data-canonical-src="https://img.shields.io/npm/v/@crawlee/core/next.svg" style="max-width: 100%;"></a>
|
|
14
18
|
<a href="https://www.npmjs.com/package/@crawlee/core" rel="nofollow"><img src="https://img.shields.io/npm/dm/@crawlee/core.svg" alt="Downloads" data-canonical-src="https://img.shields.io/npm/dm/@crawlee/core.svg" style="max-width: 100%;"></a>
|
|
@@ -24,7 +28,7 @@ Crawlee is available as the [`crawlee`](https://www.npmjs.com/package/crawlee) N
|
|
|
24
28
|
|
|
25
29
|
> 👉 **View full documentation, guides and examples on the [Crawlee project website](https://crawlee.dev)** 👈
|
|
26
30
|
|
|
27
|
-
>
|
|
31
|
+
> Do you prefer 🐍 Python instead of JavaScript? [👉 Checkout Crawlee for Python 👈](https://github.com/apify/crawlee-python).
|
|
28
32
|
|
|
29
33
|
## Installation
|
|
30
34
|
|
|
@@ -85,7 +89,7 @@ By default, Crawlee stores data to `./storage` in the current working directory.
|
|
|
85
89
|
We provide automated beta builds for every merged code change in Crawlee. You can find them in the npm [list of releases](https://www.npmjs.com/package/crawlee?activeTab=versions). If you want to test new features or bug fixes before we release them, feel free to install a beta build like this:
|
|
86
90
|
|
|
87
91
|
```bash
|
|
88
|
-
npm install crawlee@
|
|
92
|
+
npm install crawlee@next
|
|
89
93
|
```
|
|
90
94
|
|
|
91
95
|
If you also use the [Apify SDK](https://github.com/apify/apify-sdk-js), you need to specify dependency overrides in your `package.json` file so that you don't end up with multiple versions of Crawlee installed:
|
|
@@ -94,9 +98,9 @@ If you also use the [Apify SDK](https://github.com/apify/apify-sdk-js), you need
|
|
|
94
98
|
{
|
|
95
99
|
"overrides": {
|
|
96
100
|
"apify": {
|
|
97
|
-
"@crawlee/core": "
|
|
98
|
-
"@crawlee/types": "
|
|
99
|
-
"@crawlee/utils": "
|
|
101
|
+
"@crawlee/core": "$crawlee",
|
|
102
|
+
"@crawlee/types": "$crawlee",
|
|
103
|
+
"@crawlee/utils": "$crawlee"
|
|
100
104
|
}
|
|
101
105
|
}
|
|
102
106
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GlobInput, PseudoUrlInput, RegExpInput, RequestProvider, RequestTransform } from '@crawlee/browser';
|
|
1
|
+
import type { GlobInput, PseudoUrlInput, RegExpInput, RequestProvider, RequestTransform, SkippedRequestCallback } from '@crawlee/browser';
|
|
2
2
|
import type { BatchAddRequestsResult, Dictionary } from '@crawlee/types';
|
|
3
3
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
4
4
|
import type { ClickOptions, Page, Target } from 'puppeteer';
|
|
@@ -39,6 +39,16 @@ export interface EnqueueLinksByClickingElementsOptions {
|
|
|
39
39
|
* after clicking on elements matching the provided CSS selector.
|
|
40
40
|
*/
|
|
41
41
|
globs?: GlobInput[];
|
|
42
|
+
/**
|
|
43
|
+
* An array of glob pattern strings, regexp patterns or plain objects
|
|
44
|
+
* containing patterns matching URLs that will **never** be enqueued.
|
|
45
|
+
*
|
|
46
|
+
* The plain objects must include either the `glob` property or the `regexp` property.
|
|
47
|
+
*
|
|
48
|
+
* Glob matching is always case-insensitive.
|
|
49
|
+
* If you need case-sensitive matching, provide a regexp.
|
|
50
|
+
*/
|
|
51
|
+
exclude?: readonly (GlobInput | RegExpInput)[];
|
|
42
52
|
/**
|
|
43
53
|
* An array of regular expressions or plain objects
|
|
44
54
|
* containing regular expressions matching the URLs to be enqueued.
|
|
@@ -72,25 +82,28 @@ export interface EnqueueLinksByClickingElementsOptions {
|
|
|
72
82
|
*/
|
|
73
83
|
pseudoUrls?: PseudoUrlInput[];
|
|
74
84
|
/**
|
|
75
|
-
*
|
|
76
|
-
* to remove
|
|
77
|
-
* when you need to enqueue multiple `Requests` to the queue that share the same URL,
|
|
78
|
-
* or to dynamically update or create `userData`.
|
|
79
|
-
*
|
|
80
|
-
* For example: by adding `useExtendedUniqueKey: true` to the `request` object, `uniqueKey` will be computed from
|
|
81
|
-
* a combination of `url`, `method` and `payload` which enables crawling of websites that navigate using form submits
|
|
82
|
-
* (POST requests).
|
|
85
|
+
* After {@link Request} objects are constructed and filtered by URL patterns (`globs`, `regexps`, `pseudoUrls`),
|
|
86
|
+
* this function can be used to remove them or modify their contents such as `userData`, `payload` or, most importantly
|
|
87
|
+
* `uniqueKey`. This is useful when you need to enqueue multiple `Requests` to the queue that share the same URL,
|
|
88
|
+
* but differ in methods or payloads, or to dynamically update or create `userData`.
|
|
83
89
|
*
|
|
84
90
|
* **Example:**
|
|
85
91
|
* ```javascript
|
|
86
92
|
* {
|
|
87
93
|
* transformRequestFunction: (request) => {
|
|
88
94
|
* request.userData.foo = 'bar';
|
|
89
|
-
* request.useExtendedUniqueKey = true;
|
|
90
95
|
* return request;
|
|
91
96
|
* }
|
|
92
97
|
* }
|
|
93
98
|
* ```
|
|
99
|
+
*
|
|
100
|
+
* Note that `transformRequestFunction` has the highest priority and can overwrite request options
|
|
101
|
+
* specified in `globs`, `regexps`, or `pseudoUrls` objects, as well as the global `label` option.
|
|
102
|
+
*
|
|
103
|
+
* The function receives a {@link RequestOptions} object and can return either:
|
|
104
|
+
* - The modified {@link RequestOptions} object
|
|
105
|
+
* - `'unchanged'` to keep the original options as-is
|
|
106
|
+
* - A falsy value or `'skip'` to exclude the request from the queue
|
|
94
107
|
*/
|
|
95
108
|
transformRequestFunction?: RequestTransform;
|
|
96
109
|
/**
|
|
@@ -130,6 +143,12 @@ export interface EnqueueLinksByClickingElementsOptions {
|
|
|
130
143
|
* @default false
|
|
131
144
|
*/
|
|
132
145
|
skipNavigation?: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* When a request is skipped for some reason, you can use this callback to act on it.
|
|
148
|
+
* This is fired for requests skipped because they don't match enqueueLinks filters
|
|
149
|
+
* or because they were removed by `transformRequestFunction`.
|
|
150
|
+
*/
|
|
151
|
+
onSkippedRequest?: SkippedRequestCallback;
|
|
133
152
|
}
|
|
134
153
|
/**
|
|
135
154
|
* The function finds elements matching a specific CSS selector in a Puppeteer page,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click-elements.d.ts","sourceRoot":"","sources":["../../../src/internals/enqueue-links/click-elements.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,SAAS,EACT,cAAc,EACd,WAAW,EAEX,eAAe,EACf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"click-elements.d.ts","sourceRoot":"","sources":["../../../src/internals/enqueue-links/click-elements.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,SAAS,EACT,cAAc,EACd,WAAW,EAEX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EAEzB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAA0C,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOpG,MAAM,WAAW,qCAAqC;IAClD;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;OAEG;IACH,YAAY,EAAE,eAAe,CAAC;IAE9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,UAAU,CAAC;IAEtB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC;IAE/C;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAExB;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,wBAAwB,CAAC,EAAE,gBAAgB,CAAC;IAE5C;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,8BAA8B,CAChD,OAAO,EAAE,qCAAqC,GAC/C,OAAO,CAAC,sBAAsB,CAAC,CA2GjC;AAED,UAAU,sBAAsB;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,UAAU,kDAAmD,SAAQ,sBAAsB;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAsB,2CAA2C,CAC7D,OAAO,EAAE,kDAAkD,GAC5D,OAAO,CAAC,UAAU,EAAE,CAAC,CA2BvB;AA0DD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpE;AAiDD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B5G"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { URL } from 'node:url';
|
|
2
|
-
import { constructGlobObjectsFromGlobs, constructRegExpObjectsFromPseudoUrls, constructRegExpObjectsFromRegExps, createRequestOptions,
|
|
2
|
+
import { applyRequestTransform, constructGlobObjectsFromGlobs, constructRegExpObjectsFromPseudoUrls, constructRegExpObjectsFromRegExps, createRequestOptions, filterRequestOptionsByPatterns, Request, serviceLocator, } from '@crawlee/browser';
|
|
3
3
|
import ow from 'ow';
|
|
4
|
-
import log_ from '@apify/log';
|
|
5
4
|
import { addInterceptRequestHandler, removeInterceptRequestHandler } from '../utils/puppeteer_request_interception.js';
|
|
6
5
|
const STARTING_Z_INDEX = 2147400000;
|
|
7
|
-
const
|
|
6
|
+
const getLog = () => serviceLocator.getChildLog('Puppeteer Click Elements');
|
|
8
7
|
/**
|
|
9
8
|
* The function finds elements matching a specific CSS selector in a Puppeteer page,
|
|
10
9
|
* clicks all those elements using a mouse move and a left mouse button click and intercepts
|
|
@@ -56,19 +55,34 @@ export async function enqueueLinksByClickingElements(options) {
|
|
|
56
55
|
pseudoUrls: ow.optional.array.ofType(ow.any(ow.string, ow.object.hasKeys('purl'))),
|
|
57
56
|
globs: ow.optional.array.ofType(ow.any(ow.string, ow.object.hasKeys('glob'))),
|
|
58
57
|
regexps: ow.optional.array.ofType(ow.any(ow.regExp, ow.object.hasKeys('regexp'))),
|
|
58
|
+
exclude: ow.optional.array.ofType(ow.any(ow.string, ow.regExp, ow.object.hasKeys('glob'), ow.object.hasKeys('regexp'))),
|
|
59
59
|
transformRequestFunction: ow.optional.function,
|
|
60
60
|
waitForPageIdleSecs: ow.optional.number,
|
|
61
61
|
maxWaitForPageIdleSecs: ow.optional.number,
|
|
62
62
|
label: ow.optional.string,
|
|
63
63
|
forefront: ow.optional.boolean,
|
|
64
64
|
skipNavigation: ow.optional.boolean,
|
|
65
|
+
onSkippedRequest: ow.optional.function,
|
|
65
66
|
}));
|
|
66
|
-
const { page, requestQueue, selector, clickOptions,
|
|
67
|
+
const { page, requestQueue, selector, clickOptions,
|
|
68
|
+
// oxlint-disable-next-line typescript/no-deprecated -- still accepted for backwards compat
|
|
69
|
+
pseudoUrls, globs, regexps, transformRequestFunction, waitForPageIdleSecs = 1, maxWaitForPageIdleSecs = 5, forefront, exclude, onSkippedRequest, } = options;
|
|
67
70
|
const waitForPageIdleMillis = waitForPageIdleSecs * 1000;
|
|
68
71
|
const maxWaitForPageIdleMillis = maxWaitForPageIdleSecs * 1000;
|
|
72
|
+
const urlExcludePatternObjects = [];
|
|
69
73
|
const urlPatternObjects = [];
|
|
74
|
+
if (exclude?.length) {
|
|
75
|
+
for (const excl of exclude) {
|
|
76
|
+
if (typeof excl === 'string' || 'glob' in excl) {
|
|
77
|
+
urlExcludePatternObjects.push(...constructGlobObjectsFromGlobs([excl]));
|
|
78
|
+
}
|
|
79
|
+
else if (excl instanceof RegExp || 'regexp' in excl) {
|
|
80
|
+
urlExcludePatternObjects.push(...constructRegExpObjectsFromRegExps([excl]));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
70
84
|
if (pseudoUrls?.length) {
|
|
71
|
-
|
|
85
|
+
getLog().deprecated('`pseudoUrls` option is deprecated, use `globs` or `regexps` instead');
|
|
72
86
|
urlPatternObjects.push(...constructRegExpObjectsFromPseudoUrls(pseudoUrls));
|
|
73
87
|
}
|
|
74
88
|
if (globs?.length) {
|
|
@@ -84,11 +98,20 @@ export async function enqueueLinksByClickingElements(options) {
|
|
|
84
98
|
maxWaitForPageIdleMillis,
|
|
85
99
|
clickOptions,
|
|
86
100
|
});
|
|
87
|
-
|
|
101
|
+
const requestOptions = createRequestOptions(interceptedRequests, options);
|
|
102
|
+
const skippedByFilters = [];
|
|
103
|
+
let filteredOptions = filterRequestOptionsByPatterns(requestOptions, urlPatternObjects.length > 0 ? urlPatternObjects : undefined, urlExcludePatternObjects, undefined, (url) => skippedByFilters.push(url));
|
|
104
|
+
if (onSkippedRequest && skippedByFilters.length > 0) {
|
|
105
|
+
await Promise.all(skippedByFilters.map(async (url) => onSkippedRequest({ url, reason: 'filters' })));
|
|
106
|
+
}
|
|
88
107
|
if (transformRequestFunction) {
|
|
89
|
-
|
|
108
|
+
const skippedByTransform = [];
|
|
109
|
+
filteredOptions = applyRequestTransform(filteredOptions, transformRequestFunction, (r) => skippedByTransform.push(r));
|
|
110
|
+
if (onSkippedRequest && skippedByTransform.length > 0) {
|
|
111
|
+
await Promise.all(skippedByTransform.map(async (r) => onSkippedRequest({ url: r.url, reason: 'transform' })));
|
|
112
|
+
}
|
|
90
113
|
}
|
|
91
|
-
const requests =
|
|
114
|
+
const requests = filteredOptions.map((opts) => new Request(opts));
|
|
92
115
|
const { addedRequests } = await requestQueue.addRequestsBatched(requests, { forefront });
|
|
93
116
|
return { processedRequests: addedRequests, unprocessedRequests: [] };
|
|
94
117
|
}
|
|
@@ -130,6 +153,7 @@ function createInterceptRequestHandler(page, requests) {
|
|
|
130
153
|
url,
|
|
131
154
|
headers: req.headers(),
|
|
132
155
|
method: req.method(),
|
|
156
|
+
// oxlint-disable-next-line typescript/no-deprecated -- fetchPostData() is async and adds a CDP roundtrip per request; keep the sync page-cached read
|
|
133
157
|
payload: req.postData(),
|
|
134
158
|
}));
|
|
135
159
|
if (req.redirectChain().length) {
|
|
@@ -163,7 +187,9 @@ function createTargetCreatedHandler(page, requests) {
|
|
|
163
187
|
await createdPage.close();
|
|
164
188
|
}
|
|
165
189
|
catch (err) {
|
|
166
|
-
|
|
190
|
+
getLog().debug('enqueueLinksByClickingElements: Could not close spawned page.', {
|
|
191
|
+
error: err.stack,
|
|
192
|
+
});
|
|
167
193
|
}
|
|
168
194
|
};
|
|
169
195
|
}
|
|
@@ -172,6 +198,7 @@ function createTargetCreatedHandler(page, requests) {
|
|
|
172
198
|
* There will generally be a lot of other targets being created in the browser.
|
|
173
199
|
*/
|
|
174
200
|
export function isTargetRelevant(page, target) {
|
|
201
|
+
// oxlint-disable-next-line typescript/no-deprecated -- the non-deprecated replacement (opener.page()) is async and would force every call site to await, including EventEmitter callbacks
|
|
175
202
|
return target.type() === 'page' && page.target() === target.opener();
|
|
176
203
|
}
|
|
177
204
|
/**
|
|
@@ -219,7 +246,7 @@ async function preventHistoryNavigation(page) {
|
|
|
219
246
|
*/
|
|
220
247
|
export async function clickElements(page, selector, clickOptions) {
|
|
221
248
|
const elementHandles = await page.$$(selector);
|
|
222
|
-
|
|
249
|
+
getLog().debug(`enqueueLinksByClickingElements: There are ${elementHandles.length} elements to click.`);
|
|
223
250
|
let clickedElementsCount = 0;
|
|
224
251
|
let zIndex = STARTING_Z_INDEX;
|
|
225
252
|
let shouldLogWarning = true;
|
|
@@ -232,15 +259,15 @@ export async function clickElements(page, selector, clickOptions) {
|
|
|
232
259
|
catch (err) {
|
|
233
260
|
const e = err;
|
|
234
261
|
if (shouldLogWarning && e.stack.includes('is detached from document')) {
|
|
235
|
-
|
|
262
|
+
getLog().warning(`An element with selector ${selector} that you're trying to click has been removed from the page. ` +
|
|
236
263
|
'This was probably caused by an earlier click which triggered some JavaScript on the page that caused it to change. ' +
|
|
237
264
|
'If you\'re trying to enqueue pagination links, we suggest using the "next" button, if available and going one by one.');
|
|
238
265
|
shouldLogWarning = false;
|
|
239
266
|
}
|
|
240
|
-
|
|
267
|
+
getLog().debug('enqueueLinksByClickingElements: Click failed.', { stack: e.stack });
|
|
241
268
|
}
|
|
242
269
|
}
|
|
243
|
-
|
|
270
|
+
getLog().debug(`enqueueLinksByClickingElements: Successfully clicked ${clickedElementsCount} elements out of ${elementHandles.length}`);
|
|
244
271
|
}
|
|
245
272
|
/* istanbul ignore next */
|
|
246
273
|
/**
|
|
@@ -277,7 +304,6 @@ function updateElementCssToEnableMouseClick(el, zIndex) {
|
|
|
277
304
|
async function waitForPageIdle({ page, waitForPageIdleMillis, maxWaitForPageIdleMillis, }) {
|
|
278
305
|
return new Promise((resolve) => {
|
|
279
306
|
let timeout;
|
|
280
|
-
let maxTimeout;
|
|
281
307
|
const context = page.browserContext();
|
|
282
308
|
function newTabTracker(target) {
|
|
283
309
|
if (isTargetRelevant(page, target))
|
|
@@ -291,7 +317,7 @@ async function waitForPageIdle({ page, waitForPageIdleMillis, maxWaitForPageIdle
|
|
|
291
317
|
}, waitForPageIdleMillis);
|
|
292
318
|
}
|
|
293
319
|
function maxTimeoutHandler() {
|
|
294
|
-
|
|
320
|
+
getLog().debug(`enqueueLinksByClickingElements: Page still showed activity after ${maxWaitForPageIdleMillis}ms. ` +
|
|
295
321
|
'This is probably due to the website itself dispatching requests, but some links may also have been missed.');
|
|
296
322
|
finish();
|
|
297
323
|
}
|
|
@@ -301,7 +327,7 @@ async function waitForPageIdle({ page, waitForPageIdleMillis, maxWaitForPageIdle
|
|
|
301
327
|
context.off('targetcreated', newTabTracker);
|
|
302
328
|
resolve();
|
|
303
329
|
}
|
|
304
|
-
maxTimeout = setTimeout(maxTimeoutHandler, maxWaitForPageIdleMillis);
|
|
330
|
+
const maxTimeout = setTimeout(maxTimeoutHandler, maxWaitForPageIdleMillis);
|
|
305
331
|
activityHandler(); // We call this once manually in case there would be no requests at all.
|
|
306
332
|
page.on('request', activityHandler);
|
|
307
333
|
page.on('framenavigated', activityHandler);
|
|
@@ -325,7 +351,7 @@ async function restoreHistoryNavigationAndSaveCapturedUrls(page, requests) {
|
|
|
325
351
|
requests.add(JSON.stringify({ url }));
|
|
326
352
|
}
|
|
327
353
|
catch (err) {
|
|
328
|
-
|
|
354
|
+
getLog().debug('enqueueLinksByClickingElements: Failed to ', { error: err.stack });
|
|
329
355
|
}
|
|
330
356
|
});
|
|
331
357
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"click-elements.js","sourceRoot":"","sources":["../../../src/internals/enqueue-links/click-elements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAW/B,OAAO,EACH,6BAA6B,EAC7B,oCAAoC,EACpC,iCAAiC,EACjC,oBAAoB,EACpB,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,OAAO,IAAI,MAAM,YAAY,CAAC;AAE9B,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAEvH,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAiJ/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAChD,OAA8C;IAE9C,EAAE,CACE,OAAO,EACP,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;QACjB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;QAC3C,YAAY,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC;QACjE,QAAQ,EAAE,EAAE,CAAC,MAAM;QACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;QAC5B,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC;QAC/D,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjF,wBAAwB,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ;QAC9C,mBAAmB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;QACvC,sBAAsB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;QAC1C,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;QACzB,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO;QAC9B,cAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO;KACtC,CAAC,CACL,CAAC;IAEF,MAAM,EACF,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,KAAK,EACL,OAAO,EACP,wBAAwB,EACxB,mBAAmB,GAAG,CAAC,EACvB,sBAAsB,GAAG,CAAC,EAC1B,SAAS,GACZ,GAAG,OAAO,CAAC;IAEZ,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACzD,MAAM,wBAAwB,GAAG,sBAAsB,GAAG,IAAI,CAAC;IAE/D,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IAEjD,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,GAAG,CAAC,UAAU,CAAC,qEAAqE,CAAC,CAAC;QACtF,iBAAiB,CAAC,IAAI,CAAC,GAAG,oCAAoC,CAAC,UAAU,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,iBAAiB,CAAC,IAAI,CAAC,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,iBAAiB,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,2CAA2C,CAAC;QAC1E,IAAI;QACJ,QAAQ;QACR,qBAAqB;QACrB,wBAAwB;QACxB,YAAY;KACf,CAAC,CAAC;IACH,IAAI,cAAc,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACxE,IAAI,wBAAwB,EAAE,CAAC;QAC3B,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAqB,CAAC;IACzG,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;AACzE,CAAC;AAaD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2CAA2C,CAC7D,OAA2D;IAE3D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAElG,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAE/B,MAAM,oBAAoB,GAAG,6BAA6B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAE3E,MAAM,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAE5C,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEjF,MAAM,2CAA2C,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC7C,MAAM,6BAA6B,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAEhE,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,6BAA6B,CAAC,IAAU,EAAE,QAAqB;IACpE,OAAO,KAAK,UAAU,oBAAoB,CAAC,GAAG;QAC1C,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,GAAG,CACR,IAAI,CAAC,SAAS,CAAC;YACX,GAAG;YACH,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;YACpB,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE;SAC1B,CAAC,CACL,CAAC;QAEF,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B;QACjE,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B;QAC5D,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,IAAU,EAAE,GAAqB;IAClE,OAAO,GAAG,CAAC,mBAAmB,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,IAAU,EAAE,QAAqB;IACjE,OAAO,KAAK,UAAU,eAAe,CAAC,MAAM;QACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,OAAO;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAEtC,iDAAiD;QACjD,sCAAsC;QACtC,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,WAAY,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,+DAA+D,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,KAAK,EAAE,CAAC,CAAC;QAChH,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,MAAc;IACvD,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,IAAU,EAAE,QAAqB;IAClE,OAAO,SAAS,gBAAgB,CAAC,KAAK;QAClC,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;AACN,CAAC;AAaD;;GAEG;AACH,KAAK,UAAU,wBAAwB,CAAC,IAAU;IAC9C,0BAA0B;IAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACrB,MAAgC,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC;QACvE,OAAQ,MAAgC,CAAC,OAAO,CAAC,CAAC,iCAAiC;QAClF,MAAgC,CAAC,OAAO,GAAG;YACxC,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,EAAE;YACT,EAAE,KAAI,CAAC;YACP,IAAI,KAAI,CAAC;YACT,OAAO,KAAI,CAAC;YACZ,SAAS,CAAC,GAAG,IAAe;gBACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,YAAY,CAAC,GAAG,IAAe;gBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;SACW,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,QAAgB,EAAE,YAA2B;IACzF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC/C,GAAG,CAAC,KAAK,CAAC,6CAA6C,cAAc,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACnG,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,GAAG,gBAAgB,CAAC;IAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,kCAAkC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACjC,oBAAoB,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,GAAY,CAAC;YACvB,IAAI,gBAAgB,IAAI,CAAC,CAAC,KAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,OAAO,CACP,4BAA4B,QAAQ,+DAA+D;oBAC/F,qHAAqH;oBACrH,uHAAuH,CAC9H,CAAC;gBACF,gBAAgB,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IACD,GAAG,CAAC,KAAK,CACL,wDAAwD,oBAAoB,oBAAoB,cAAc,CAAC,MAAM,EAAE,CAC1H,CAAC;AACN,CAAC;AAED,0BAA0B;AAC1B;;GAEG;AACH,SAAS,kCAAkC,CAAC,EAAW,EAAE,MAAc;IACnE,MAAM,MAAM,GAAG,EAAiB,CAAC;IACjC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAChC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACvB,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACpD,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACvD,IAAI,CAAC,YAAY,CAAC,KAAK;QAAE,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,eAAe,CAAC,EAC3B,IAAI,EACJ,qBAAqB,EACrB,wBAAwB,GACH;IACrB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACjC,IAAI,OAAuB,CAAC;QAC5B,IAAI,UAA0B,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtC,SAAS,aAAa,CAAC,MAAc;YACjC,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,eAAe,EAAE,CAAC;QAC1D,CAAC;QAED,SAAS,eAAe;YACpB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,YAAY,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,EAAE,CAAC;YACb,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,iBAAiB;YACtB,GAAG,CAAC,KAAK,CACL,oEAAoE,wBAAwB,MAAM;gBAC9F,4GAA4G,CACnH,CAAC;YACF,MAAM,EAAE,CAAC;QACb,CAAC;QAED,SAAS,MAAM;YACX,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACd,CAAC;QAED,UAAU,GAAG,UAAU,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;QACrE,eAAe,EAAE,CAAC,CAAC,wEAAwE;QAC3F,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,2CAA2C,CAAC,IAAU,EAAE,QAAqB;IACxF,0BAA0B;IAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACnC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,OAAiC,CAAC;QACjE,MAAgC,CAAC,OAAO,GAAI,MAAgC,CAAC,mBAAmB,CAAC;QAClG,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAW,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;YAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"click-elements.js","sourceRoot":"","sources":["../../../src/internals/enqueue-links/click-elements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import type { BrowserCrawlerOptions, BrowserCrawlingContext, BrowserHook,
|
|
2
|
-
import { BrowserCrawler
|
|
1
|
+
import type { BrowserCrawlerOptions, BrowserCrawlingContext, BrowserHook, GetUserDataFromRequest, RouterRoutes } from '@crawlee/browser';
|
|
2
|
+
import { BrowserCrawler } from '@crawlee/browser';
|
|
3
3
|
import type { PuppeteerController, PuppeteerPlugin } from '@crawlee/browser-pool';
|
|
4
4
|
import type { Dictionary } from '@crawlee/types';
|
|
5
5
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
6
6
|
import type { HTTPResponse, LaunchOptions, Page } from 'puppeteer';
|
|
7
|
+
import type { EnqueueLinksByClickingElementsOptions } from './enqueue-links/click-elements.js';
|
|
7
8
|
import type { PuppeteerLaunchContext } from './puppeteer-launcher.js';
|
|
8
|
-
import type {
|
|
9
|
-
|
|
9
|
+
import type { InterceptHandler } from './utils/puppeteer_request_interception.js';
|
|
10
|
+
import type { BlockRequestsOptions, DirectNavigationOptions, InfiniteScrollOptions, InjectFileOptions, PuppeteerContextUtils, SaveSnapshotOptions } from './utils/puppeteer_utils.js';
|
|
11
|
+
export interface PuppeteerCrawlingContext<UserData extends Dictionary = Dictionary> extends BrowserCrawlingContext<Page, HTTPResponse, PuppeteerController, UserData>, PuppeteerContextUtils {
|
|
10
12
|
}
|
|
11
13
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
12
14
|
export interface PuppeteerHook extends BrowserHook<PuppeteerCrawlingContext, PuppeteerGoToOptions> {
|
|
13
15
|
}
|
|
14
|
-
export interface PuppeteerRequestHandler extends BrowserRequestHandler<PuppeteerCrawlingContext> {
|
|
15
|
-
}
|
|
16
16
|
export type PuppeteerGoToOptions = Parameters<Page['goto']>[1];
|
|
17
|
-
export interface PuppeteerCrawlerOptions extends BrowserCrawlerOptions<PuppeteerCrawlingContext, {
|
|
17
|
+
export interface PuppeteerCrawlerOptions<ContextExtension = Dictionary<never>, ExtendedContext extends PuppeteerCrawlingContext = PuppeteerCrawlingContext & ContextExtension> extends BrowserCrawlerOptions<Page, HTTPResponse, PuppeteerController, PuppeteerCrawlingContext, ContextExtension, ExtendedContext, {
|
|
18
18
|
browserPlugins: [PuppeteerPlugin];
|
|
19
19
|
}> {
|
|
20
20
|
/**
|
|
@@ -119,11 +119,9 @@ export interface PuppeteerCrawlerOptions extends BrowserCrawlerOptions<Puppeteer
|
|
|
119
119
|
* ```
|
|
120
120
|
* @category Crawlers
|
|
121
121
|
*/
|
|
122
|
-
export declare class PuppeteerCrawler extends BrowserCrawler<{
|
|
122
|
+
export declare class PuppeteerCrawler<ContextExtension = Dictionary<never>, ExtendedContext extends PuppeteerCrawlingContext = PuppeteerCrawlingContext & ContextExtension> extends BrowserCrawler<Page, HTTPResponse, PuppeteerController, {
|
|
123
123
|
browserPlugins: [PuppeteerPlugin];
|
|
124
|
-
}, LaunchOptions, PuppeteerCrawlingContext> {
|
|
125
|
-
private readonly options;
|
|
126
|
-
readonly config: Configuration;
|
|
124
|
+
}, LaunchOptions, PuppeteerCrawlingContext, ContextExtension, ExtendedContext> {
|
|
127
125
|
protected static optionsShape: {
|
|
128
126
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
129
127
|
browserPoolOptions: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
@@ -137,18 +135,14 @@ export declare class PuppeteerCrawler extends BrowserCrawler<{
|
|
|
137
135
|
launchContext: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
138
136
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
139
137
|
headless: import("ow").AnyPredicate<string | boolean>;
|
|
140
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
141
|
-
sessionPoolOptions: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
142
138
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
143
139
|
persistCookiesPerSession: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
|
|
144
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
145
|
-
useSessionPool: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
|
|
146
140
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
147
141
|
proxyConfiguration: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
148
142
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
149
|
-
|
|
143
|
+
contextPipelineBuilder: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
150
144
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
151
|
-
|
|
145
|
+
extendContext: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
152
146
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
153
147
|
requestList: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
154
148
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
@@ -169,20 +163,38 @@ export declare class PuppeteerCrawler extends BrowserCrawler<{
|
|
|
169
163
|
maxSessionRotations: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
170
164
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
171
165
|
maxRequestsPerCrawl: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
166
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
167
|
+
maxCrawlDepth: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
172
168
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
173
169
|
autoscaledPoolOptions: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
170
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
171
|
+
sessionPool: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
174
172
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
175
173
|
statusMessageLoggingInterval: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
176
174
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
177
175
|
statusMessageCallback: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
176
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
177
|
+
additionalHttpErrorStatusCodes: import("ow").ArrayPredicate<number>;
|
|
178
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
179
|
+
ignoreHttpErrorStatusCodes: import("ow").ArrayPredicate<number>;
|
|
180
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
181
|
+
blockedStatusCodes: import("ow").ArrayPredicate<number>;
|
|
178
182
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
179
183
|
retryOnBlocked: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
|
|
180
184
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
181
|
-
respectRobotsTxtFile: import("ow").
|
|
185
|
+
respectRobotsTxtFile: import("ow").AnyPredicate<boolean | object>;
|
|
182
186
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
183
187
|
onSkippedRequest: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
184
188
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
185
189
|
httpClient: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
190
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
191
|
+
configuration: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
192
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
193
|
+
storageClient: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
194
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
195
|
+
eventManager: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
196
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
197
|
+
logger: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
186
198
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
187
199
|
minConcurrency: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
188
200
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
@@ -191,18 +203,36 @@ export declare class PuppeteerCrawler extends BrowserCrawler<{
|
|
|
191
203
|
maxRequestsPerMinute: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
192
204
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
193
205
|
keepAlive: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
|
|
194
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
195
|
-
log: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
196
206
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
197
207
|
experiments: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
198
208
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
199
209
|
statisticsOptions: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
210
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
211
|
+
id: import("ow").StringPredicate & import("ow").BasePredicate<string | undefined>;
|
|
200
212
|
};
|
|
201
213
|
/**
|
|
202
214
|
* All `PuppeteerCrawler` parameters are passed via an options object.
|
|
203
215
|
*/
|
|
204
|
-
constructor(options?: PuppeteerCrawlerOptions,
|
|
205
|
-
|
|
216
|
+
constructor(options?: PuppeteerCrawlerOptions<ContextExtension, ExtendedContext>);
|
|
217
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
218
|
+
protected buildContextPipeline(): import("@crawlee/browser").ContextPipeline<import("@crawlee/browser").CrawlingContext<Dictionary>, BrowserCrawlingContext<Page, HTTPResponse, PuppeteerController, Dictionary> & {
|
|
219
|
+
injectFile: (filePath: string, options?: InjectFileOptions) => Promise<unknown>;
|
|
220
|
+
injectJQuery: () => Promise<void>;
|
|
221
|
+
waitForSelector: (selector: string, timeoutMs?: number) => Promise<void>;
|
|
222
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
223
|
+
parseWithCheerio: (selector?: string, timeoutMs?: number) => Promise<import("@crawlee/browser").CheerioAPI>;
|
|
224
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
225
|
+
enqueueLinksByClickingElements: (options: Omit<EnqueueLinksByClickingElementsOptions, "page" | "requestQueue">) => Promise<import("@crawlee/types").BatchAddRequestsResult>;
|
|
226
|
+
blockRequests: (options?: BlockRequestsOptions) => Promise<void>;
|
|
227
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
228
|
+
compileScript: (scriptString: string, ctx?: Dictionary) => import("./utils/puppeteer_utils.js").CompiledScriptFunction;
|
|
229
|
+
addInterceptRequestHandler: (handler: InterceptHandler) => Promise<void>;
|
|
230
|
+
removeInterceptRequestHandler: (handler: InterceptHandler) => Promise<void>;
|
|
231
|
+
infiniteScroll: (options?: InfiniteScrollOptions) => Promise<void>;
|
|
232
|
+
saveSnapshot: (options?: SaveSnapshotOptions) => Promise<void>;
|
|
233
|
+
closeCookieModals: () => Promise<void>;
|
|
234
|
+
}>;
|
|
235
|
+
private enhanceContext;
|
|
206
236
|
protected _navigationHandler(crawlingContext: PuppeteerCrawlingContext, gotoOptions: DirectNavigationOptions): Promise<HTTPResponse | null>;
|
|
207
237
|
}
|
|
208
238
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/puppeteer-crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"puppeteer-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/puppeteer-crawler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { BrowserCrawler,
|
|
1
|
+
import { BrowserCrawler, RequestState, Router } from '@crawlee/browser';
|
|
2
|
+
import { serviceLocator } from '@crawlee/core';
|
|
2
3
|
import ow from 'ow';
|
|
3
4
|
import { PuppeteerLauncher } from './puppeteer-launcher.js';
|
|
4
|
-
import { gotoExtended,
|
|
5
|
+
import { gotoExtended, puppeteerUtils } from './utils/puppeteer_utils.js';
|
|
5
6
|
/**
|
|
6
7
|
* Provides a simple framework for parallel crawling of web pages
|
|
7
8
|
* using headless Chrome with [Puppeteer](https://github.com/puppeteer/puppeteer).
|
|
@@ -66,8 +67,6 @@ import { gotoExtended, registerUtilsToContext } from './utils/puppeteer_utils.js
|
|
|
66
67
|
* @category Crawlers
|
|
67
68
|
*/
|
|
68
69
|
export class PuppeteerCrawler extends BrowserCrawler {
|
|
69
|
-
options;
|
|
70
|
-
config;
|
|
71
70
|
static optionsShape = {
|
|
72
71
|
...BrowserCrawler.optionsShape,
|
|
73
72
|
browserPoolOptions: ow.optional.object,
|
|
@@ -75,9 +74,9 @@ export class PuppeteerCrawler extends BrowserCrawler {
|
|
|
75
74
|
/**
|
|
76
75
|
* All `PuppeteerCrawler` parameters are passed via an options object.
|
|
77
76
|
*/
|
|
78
|
-
constructor(options = {}
|
|
77
|
+
constructor(options = {}) {
|
|
79
78
|
ow(options, 'PuppeteerCrawlerOptions', ow.object.exactShape(PuppeteerCrawler.optionsShape));
|
|
80
|
-
const { launchContext = {}, headless, proxyConfiguration, ...browserCrawlerOptions } = options;
|
|
79
|
+
const { launchContext = {}, headless, proxyConfiguration, contextPipelineBuilder, ...browserCrawlerOptions } = options;
|
|
81
80
|
const browserPoolOptions = {
|
|
82
81
|
...options.browserPoolOptions,
|
|
83
82
|
};
|
|
@@ -94,15 +93,53 @@ export class PuppeteerCrawler extends BrowserCrawler {
|
|
|
94
93
|
launchContext.launchOptions ??= {};
|
|
95
94
|
launchContext.launchOptions.headless = headless;
|
|
96
95
|
}
|
|
97
|
-
const puppeteerLauncher = new PuppeteerLauncher(launchContext,
|
|
96
|
+
const puppeteerLauncher = new PuppeteerLauncher(launchContext, options.configuration);
|
|
98
97
|
browserPoolOptions.browserPlugins = [puppeteerLauncher.createBrowserPlugin()];
|
|
99
|
-
super({
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
super({
|
|
99
|
+
...browserCrawlerOptions,
|
|
100
|
+
launchContext,
|
|
101
|
+
proxyConfiguration,
|
|
102
|
+
browserPoolOptions,
|
|
103
|
+
contextPipelineBuilder: contextPipelineBuilder ?? (() => this.buildContextPipeline()),
|
|
104
|
+
});
|
|
102
105
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
buildContextPipeline() {
|
|
107
|
+
return super.buildContextPipeline().compose({ action: this.enhanceContext.bind(this) });
|
|
108
|
+
}
|
|
109
|
+
async enhanceContext(context) {
|
|
110
|
+
const waitForSelector = async (selector, timeoutMs = 5_000) => {
|
|
111
|
+
await context.page.waitForSelector(selector, { timeout: timeoutMs });
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
injectFile: async (filePath, options) => puppeteerUtils.injectFile(context.page, filePath, options),
|
|
115
|
+
injectJQuery: async () => {
|
|
116
|
+
if (context.request.state === RequestState.BEFORE_NAV) {
|
|
117
|
+
context.log.warning('Using injectJQuery() in preNavigationHooks leads to unstable results. Use it in a postNavigationHook or a requestHandler instead.');
|
|
118
|
+
await puppeteerUtils.injectJQuery(context.page);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
await puppeteerUtils.injectJQuery(context.page, { surviveNavigations: false });
|
|
122
|
+
},
|
|
123
|
+
waitForSelector,
|
|
124
|
+
parseWithCheerio: async (selector, timeoutMs = 5_000) => {
|
|
125
|
+
if (selector) {
|
|
126
|
+
await waitForSelector(selector, timeoutMs);
|
|
127
|
+
}
|
|
128
|
+
return puppeteerUtils.parseWithCheerio(context.page, this.ignoreShadowRoots, this.ignoreIframes);
|
|
129
|
+
},
|
|
130
|
+
enqueueLinksByClickingElements: async (options) => puppeteerUtils.enqueueLinksByClickingElements({
|
|
131
|
+
page: context.page,
|
|
132
|
+
requestQueue: this.requestQueue,
|
|
133
|
+
...options,
|
|
134
|
+
}),
|
|
135
|
+
blockRequests: async (options) => puppeteerUtils.blockRequests(context.page, options),
|
|
136
|
+
compileScript: (scriptString, ctx) => puppeteerUtils.compileScript(scriptString, ctx),
|
|
137
|
+
addInterceptRequestHandler: async (handler) => puppeteerUtils.addInterceptRequestHandler(context.page, handler),
|
|
138
|
+
removeInterceptRequestHandler: async (handler) => puppeteerUtils.removeInterceptRequestHandler(context.page, handler),
|
|
139
|
+
infiniteScroll: async (options) => puppeteerUtils.infiniteScroll(context.page, options),
|
|
140
|
+
saveSnapshot: async (options) => puppeteerUtils.saveSnapshot(context.page, { ...options, config: serviceLocator.getConfiguration() }),
|
|
141
|
+
closeCookieModals: async () => puppeteerUtils.closeCookieModals(context.page),
|
|
142
|
+
};
|
|
106
143
|
}
|
|
107
144
|
async _navigationHandler(crawlingContext, gotoOptions) {
|
|
108
145
|
return gotoExtended(crawlingContext.page, crawlingContext.request, gotoOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer-crawler.js","sourceRoot":"","sources":["../../src/internals/puppeteer-crawler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"puppeteer-crawler.js","sourceRoot":"","sources":["../../src/internals/puppeteer-crawler.ts"],"names":[],"mappings":"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"}
|