@crawlee/cheerio 3.0.0-beta.7 → 3.0.0-beta.72

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.
@@ -1,132 +1,68 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import { BasicCrawler, BasicCrawlerOptions } from '@crawlee/basic';
4
- import { CrawlerExtension, CrawlerHandleFailedRequestInput, CrawlingContext, EnqueueLinksOptions, ProxyConfiguration, ProxyInfo, Request, RequestQueue, Session } from '@crawlee/core';
5
- import { BatchAddRequestsResult } from '@crawlee/types';
6
- import { Awaitable, CheerioRoot, Dictionary } from '@crawlee/utils';
7
- import { RequestLike, ResponseLike } from 'content-type';
8
- import { OptionsInit } from 'got-scraping';
9
- import { IncomingMessage } from 'http';
10
- export interface CheerioFailedRequestHandlerInput<JSONData = Dictionary> extends CrawlerHandleFailedRequestInput, CheerioRequestHandlerInputs<JSONData> {
11
- }
12
- export declare type CheerioFailedRequestHandler<JSONData = Dictionary> = (inputs: CheerioFailedRequestHandlerInput<JSONData>) => Awaitable<void>;
13
- export interface CheerioCrawlerOptions<JSONData = Dictionary> extends Omit<BasicCrawlerOptions<CheerioCrawlingContext<JSONData>>, 'requestHandler' | 'handleRequestFunction' | 'failedRequestHandler' | 'handleFailedRequestFunction' | 'handleRequestTimeoutSecs'> {
3
+ import type { BasicCrawlerOptions } from '@crawlee/basic';
4
+ import { BasicCrawler } from '@crawlee/basic';
5
+ import type { CrawlingContext, EnqueueLinksOptions, ProxyConfiguration, ProxyInfo, Request, RequestQueue, Session } from '@crawlee/core';
6
+ import { CrawlerExtension } from '@crawlee/core';
7
+ import type { BatchAddRequestsResult, Awaitable, Dictionary } from '@crawlee/types';
8
+ import type { CheerioRoot } from '@crawlee/utils';
9
+ import type { RequestLike, ResponseLike } from 'content-type';
10
+ import type { OptionsInit, Response as GotResponse, GotOptionsInit } from 'got-scraping';
11
+ import type { IncomingMessage } from 'http';
12
+ export declare type CheerioFailedRequestHandler<JSONData = Dictionary> = (inputs: CheerioCrawlingContext<JSONData>, error: Error) => Awaitable<void>;
13
+ export interface CheerioCrawlerOptions<JSONData = Dictionary> extends Omit<BasicCrawlerOptions<CheerioCrawlingContext<JSONData>>, 'requestHandler' | 'handleRequestFunction' | 'failedRequestHandler' | 'handleFailedRequestFunction' | 'handleRequestTimeoutSecs' | 'errorHandler'> {
14
14
  /**
15
15
  * User-provided function that performs the logic of the crawler. It is called for each page
16
16
  * loaded and parsed by the crawler.
17
17
  *
18
- * The function receives the following object as an argument:
19
- * ```
20
- * {
21
- * // The Cheerio object's function with the parsed HTML.
22
- * $: Cheerio,
23
- *
24
- * // The request body of the web page, whose type depends on the content type.
25
- * body: String|Buffer,
26
- *
27
- * // The parsed object from JSON for responses with the "application/json" content types.
28
- * // For other content types it's null.
29
- * json: Object,
30
- *
31
- * // Request object with details of the requested web page
32
- * request: Request,
33
- *
34
- * // Parsed Content-Type HTTP header: { type, encoding }
35
- * contentType: Object,
18
+ * The function receives the {@link CheerioCrawlingContext} as an argument,
19
+ * where the {@link CheerioCrawlingContext.request} instance represents the URL to crawl.
36
20
  *
37
- * // An instance of Node's http.IncomingMessage object,
38
- * response: Object,
39
- *
40
- * // Session object, useful to work around anti-scraping protections
41
- * session: Session
42
- *
43
- * // ProxyInfo object with information about currently used proxy
44
- * proxyInfo: ProxyInfo
45
- *
46
- * // The running cheerio crawler instance.
47
- * crawler: CheerioCrawler
48
- * }
49
- * ```
50
- *
51
- * Type of `body` depends on the `Content-Type` header of the web page:
21
+ * Type of {@link CheerioCrawlingContext.body} depends on the `Content-Type` header of the web page:
52
22
  * - String for `text/html`, `application/xhtml+xml`, `application/xml` MIME content types
53
23
  * - Buffer for others MIME content types
54
24
  *
55
25
  * Parsed `Content-Type` header using
56
26
  * [content-type package](https://www.npmjs.com/package/content-type)
57
- * is stored in `contentType`.
27
+ * is stored in {@link CheerioCrawlingContext.contentType}`.
58
28
  *
59
29
  * Cheerio is available only for HTML and XML content types.
60
30
  *
61
- * With the {@link Request} object representing the URL to crawl.
62
- *
63
31
  * If the function returns, the returned promise is awaited by the crawler.
64
32
  *
65
33
  * If the function throws an exception, the crawler will try to re-crawl the
66
34
  * request later, up to `option.maxRequestRetries` times.
67
35
  * If all the retries fail, the crawler calls the function
68
- * provided to the `handleFailedRequestFunction` parameter.
36
+ * provided to the `failedRequestHandler` parameter.
69
37
  * To make this work, you should **always**
70
38
  * let your function throw exceptions rather than catch them.
71
39
  * The exceptions are logged to the request using the
72
40
  * {@link Request.pushErrorMessage} function.
73
41
  */
74
- requestHandler: CheerioRequestHandler<JSONData>;
42
+ requestHandler?: CheerioRequestHandler<JSONData>;
75
43
  /**
76
44
  * User-provided function that performs the logic of the crawler. It is called for each page
77
45
  * loaded and parsed by the crawler.
78
46
  *
79
- * The function receives the following object as an argument:
80
- * ```
81
- * {
82
- * // The Cheerio object's function with the parsed HTML.
83
- * $: Cheerio,
84
- *
85
- * // The request body of the web page, whose type depends on the content type.
86
- * body: String|Buffer,
87
- *
88
- * // The parsed object from JSON for responses with the "application/json" content types.
89
- * // For other content types it's null.
90
- * json: Object,
91
- *
92
- * // Request object with details of the requested web page
93
- * request: Request,
94
- *
95
- * // Parsed Content-Type HTTP header: { type, encoding }
96
- * contentType: Object,
97
- *
98
- * // An instance of Node's http.IncomingMessage object,
99
- * response: Object,
47
+ * The function receives the {@link CheerioCrawlingContext} as an argument,
48
+ * where the {@link CheerioCrawlingContext.request} instance represents the URL to crawl.
100
49
  *
101
- * // Session object, useful to work around anti-scraping protections
102
- * session: Session
103
- *
104
- * // ProxyInfo object with information about currently used proxy
105
- * proxyInfo: ProxyInfo
106
- *
107
- * // The running cheerio crawler instance.
108
- * crawler: CheerioCrawler
109
- * }
110
- * ```
111
- *
112
- * Type of `body` depends on the `Content-Type` header of the web page:
50
+ * Type of {@link CheerioCrawlingContext.body} depends on the `Content-Type` header of the web page:
113
51
  * - String for `text/html`, `application/xhtml+xml`, `application/xml` MIME content types
114
52
  * - Buffer for others MIME content types
115
53
  *
116
54
  * Parsed `Content-Type` header using
117
55
  * [content-type package](https://www.npmjs.com/package/content-type)
118
- * is stored in `contentType`.
56
+ * is stored in {@link CheerioCrawlingContext.contentType}`.
119
57
  *
120
58
  * Cheerio is available only for HTML and XML content types.
121
59
  *
122
- * With the {@link Request} object representing the URL to crawl.
123
- *
124
60
  * If the function returns, the returned promise is awaited by the crawler.
125
61
  *
126
62
  * If the function throws an exception, the crawler will try to re-crawl the
127
63
  * request later, up to `option.maxRequestRetries` times.
128
64
  * If all the retries fail, the crawler calls the function
129
- * provided to the `handleFailedRequestFunction` parameter.
65
+ * provided to the `failedRequestHandler` parameter.
130
66
  * To make this work, you should **always**
131
67
  * let your function throw exceptions rather than catch them.
132
68
  * The exceptions are logged to the request using the
@@ -138,7 +74,7 @@ export interface CheerioCrawlerOptions<JSONData = Dictionary> extends Omit<Basic
138
74
  /**
139
75
  * Timeout in which the HTTP request to the resource needs to finish, given in seconds.
140
76
  */
141
- requestTimeoutSecs?: number;
77
+ navigationTimeoutSecs?: number;
142
78
  /**
143
79
  * If set to true, SSL certificate errors will be ignored.
144
80
  */
@@ -149,51 +85,37 @@ export interface CheerioCrawlerOptions<JSONData = Dictionary> extends Omit<Basic
149
85
  * For more information, see the [documentation](https://docs.apify.com/proxy).
150
86
  */
151
87
  proxyConfiguration?: ProxyConfiguration;
88
+ /**
89
+ * User-provided function that allows modifying the request object before it gets retried by the crawler.
90
+ * It's executed before each retry for the requests that failed less than `option.maxRequestRetries` times.
91
+ *
92
+ * The function receives the {@link CheerioCrawlingContext} as the first argument,
93
+ * where the {@link CheerioCrawlingContext.request} corresponds to the request to be retried.
94
+ * Second argument is the `Error` instance that
95
+ * represents the last error thrown during processing of the request.
96
+ */
97
+ errorHandler?: CheerioFailedRequestHandler<JSONData>;
152
98
  /**
153
99
  * A function to handle requests that failed more than `option.maxRequestRetries` times.
154
- * The function receives the following object as an argument:
155
- * ```
156
- * {
157
- * error: Error,
158
- * request: Request,
159
- * session: Session,
160
- * $: Cheerio,
161
- * body: String|Buffer,
162
- * json: Object,
163
- * contentType: Object,
164
- * response: Object,
165
- * proxyInfo: ProxyInfo,
166
- * crawler: CheerioCrawler,
167
- * }
168
- * ```
169
- * where the {@link Request} instance corresponds to the failed request, and the `Error` instance
100
+ *
101
+ * The function receives the {@link CheerioCrawlingContext} as the first argument,
102
+ * where the {@link CheerioCrawlingContext.request} corresponds to the failed request.
103
+ * Second argument is the `Error` instance that
170
104
  * represents the last error thrown during processing of the request.
171
105
  *
172
- * See [source code](https://github.com/apify/apify-js/blob/master/src/crawlers/cheerio_crawler.js#L13)
106
+ * See [source code](https://github.com/apify/apify-ts/blob/master/src/crawlers/cheerio_crawler.js#L13)
173
107
  * for the default implementation of this function.
174
108
  */
175
109
  failedRequestHandler?: CheerioFailedRequestHandler<JSONData>;
176
110
  /**
177
111
  * A function to handle requests that failed more than `option.maxRequestRetries` times.
178
- * The function receives the following object as an argument:
179
- * ```
180
- * {
181
- * error: Error,
182
- * request: Request,
183
- * session: Session,
184
- * $: Cheerio,
185
- * body: String|Buffer,
186
- * json: Object,
187
- * contentType: Object,
188
- * response: Object,
189
- * proxyInfo: ProxyInfo,
190
- * crawler: CheerioCrawler,
191
- * }
192
- * ```
193
- * where the {@link Request} instance corresponds to the failed request, and the `Error` instance
112
+ *
113
+ * The function receives the {@link CheerioCrawlingContext} as the first argument,
114
+ * where the {@link CheerioCrawlingContext.request} corresponds to the failed request.
115
+ * Second argument is the `Error` instance that
194
116
  * represents the last error thrown during processing of the request.
195
117
  *
196
- * See [source code](https://github.com/apify/apify-js/blob/master/src/crawlers/cheerio_crawler.js#L13)
118
+ * See [source code](https://github.com/apify/apify-ts/blob/master/src/crawlers/cheerio_crawler.js#L13)
197
119
  * for the default implementation of this function.
198
120
  *
199
121
  * @deprecated `handleFailedRequestFunction` has been renamed to `failedRequestHandler` and will be removed in a future version.
@@ -300,7 +222,7 @@ export interface PostResponseInputs<JSONData = Dictionary> {
300
222
  crawler: CheerioCrawler<JSONData>;
301
223
  }
302
224
  export declare type PostResponse<JSONData = Dictionary> = (inputs: PostResponseInputs<JSONData>) => Awaitable<void>;
303
- export interface CheerioRequestHandlerInputs<JSONData = Dictionary> extends CrawlingContext {
225
+ export interface CheerioCrawlingContext<JSONData extends Dictionary = Dictionary> extends CrawlingContext<JSONData> {
304
226
  /**
305
227
  * The [Cheerio](https://cheerio.js.org/) object with parsed HTML.
306
228
  */
@@ -323,9 +245,9 @@ export interface CheerioRequestHandlerInputs<JSONData = Dictionary> extends Craw
323
245
  crawler: CheerioCrawler<JSONData>;
324
246
  response: IncomingMessage;
325
247
  enqueueLinks: (options?: CheerioCrawlerEnqueueLinksOptions) => Promise<BatchAddRequestsResult>;
248
+ sendRequest: (overrideOptions?: Partial<GotOptionsInit>) => Promise<GotResponse<string>>;
326
249
  }
327
- export declare type CheerioCrawlingContext<JSONData = Dictionary> = CheerioRequestHandlerInputs<JSONData>;
328
- export declare type CheerioRequestHandler<JSONData = Dictionary> = (inputs: CheerioRequestHandlerInputs<JSONData>) => Awaitable<void>;
250
+ export declare type CheerioRequestHandler<JSONData = Dictionary> = (inputs: CheerioCrawlingContext<JSONData>) => Awaitable<void>;
329
251
  export declare type CheerioCrawlerEnqueueLinksOptions = Omit<EnqueueLinksOptions, 'urls' | 'requestQueue'>;
330
252
  /**
331
253
  * Provides a framework for the parallel crawling of web pages using plain HTTP requests and
@@ -380,18 +302,15 @@ export declare type CheerioCrawlerEnqueueLinksOptions = Omit<EnqueueLinksOptions
380
302
  *
381
303
  * ```javascript
382
304
  * // Prepare a list of URLs to crawl
383
- * const requestList = new RequestList({
384
- * sources: [
385
- * { url: 'http://www.example.com/page-1' },
386
- * { url: 'http://www.example.com/page-2' },
387
- * ],
388
- * });
389
- * await requestList.initialize();
305
+ * const requestList = await RequestList.open(null, [
306
+ * { url: 'http://www.example.com/page-1' },
307
+ * { url: 'http://www.example.com/page-2' },
308
+ * ]);
390
309
  *
391
310
  * // Crawl the URLs
392
311
  * const crawler = new CheerioCrawler({
393
312
  * requestList,
394
- * handlePageFunction: async ({ request, response, body, contentType, $ }) => {
313
+ * async requestHandler({ request, response, body, contentType, $ }) {
395
314
  * const data = [];
396
315
  *
397
316
  * // Do some data extraction from the page with Cheerio.
@@ -400,7 +319,7 @@ export declare type CheerioCrawlerEnqueueLinksOptions = Omit<EnqueueLinksOptions
400
319
  * });
401
320
  *
402
321
  * // Save the data to dataset.
403
- * await Actor.pushData({
322
+ * await Dataset.pushData({
404
323
  * url: request.url,
405
324
  * html: body,
406
325
  * data,
@@ -412,7 +331,7 @@ export declare type CheerioCrawlerEnqueueLinksOptions = Omit<EnqueueLinksOptions
412
331
  * ```
413
332
  * @category Crawlers
414
333
  */
415
- export declare class CheerioCrawler<JSONData = Dictionary> extends BasicCrawler<CheerioCrawlingContext<JSONData>, CheerioFailedRequestHandlerInput<JSONData>> {
334
+ export declare class CheerioCrawler<JSONData = Dictionary> extends BasicCrawler<CheerioCrawlingContext<JSONData>> {
416
335
  /**
417
336
  * A reference to the underlying {@link ProxyConfiguration} class that manages the crawler's proxies.
418
337
  * Only available if used by the crawler.
@@ -422,14 +341,14 @@ export declare class CheerioCrawler<JSONData = Dictionary> extends BasicCrawler<
422
341
  protected preNavigationHooks: CheerioHook<JSONData>[];
423
342
  protected postNavigationHooks: CheerioHook<JSONData>[];
424
343
  protected persistCookiesPerSession: boolean;
425
- protected requestTimeoutMillis: number;
344
+ protected navigationTimeoutMillis: number;
426
345
  protected ignoreSslErrors: boolean;
427
346
  protected suggestResponseEncoding?: string;
428
347
  protected forceResponseEncoding?: string;
429
348
  protected readonly supportedMimeTypes: Set<string>;
430
349
  protected static optionsShape: {
431
350
  handlePageFunction: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
432
- requestTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
351
+ navigationTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
433
352
  ignoreSslErrors: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
434
353
  additionalMimeTypes: import("ow").ArrayPredicate<string>;
435
354
  suggestResponseEncoding: import("ow").StringPredicate & import("ow").BasePredicate<string | undefined>;
@@ -442,11 +361,9 @@ export declare class CheerioCrawler<JSONData = Dictionary> extends BasicCrawler<
442
361
  requestQueue: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
443
362
  requestHandler: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
444
363
  handleRequestFunction: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
445
- requestHandlerTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>; /**
446
- * An object with information about currently used proxy by the crawler
447
- * and configured by the {@link ProxyConfiguration} class.
448
- */
364
+ requestHandlerTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
449
365
  handleRequestTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
366
+ errorHandler: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
450
367
  failedRequestHandler: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
451
368
  handleFailedRequestFunction: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
452
369
  maxRequestRetries: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
@@ -456,12 +373,13 @@ export declare class CheerioCrawler<JSONData = Dictionary> extends BasicCrawler<
456
373
  useSessionPool: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
457
374
  minConcurrency: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
458
375
  maxConcurrency: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
376
+ maxRequestsPerMinute: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
459
377
  log: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
460
378
  };
461
379
  /**
462
380
  * All `CheerioCrawler` parameters are passed via an options object.
463
381
  */
464
- constructor(options: CheerioCrawlerOptions<JSONData>);
382
+ constructor(options?: CheerioCrawlerOptions<JSONData>);
465
383
  /**
466
384
  * **EXPERIMENTAL**
467
385
  * Function for attaching CrawlerExtensions such as the Unblockers.
@@ -469,7 +387,7 @@ export declare class CheerioCrawler<JSONData = Dictionary> extends BasicCrawler<
469
387
  */
470
388
  use(extension: CrawlerExtension): void;
471
389
  /**
472
- * Wrapper around handlePageFunction that opens and closes pages etc.
390
+ * Wrapper around requestHandler that opens and closes pages etc.
473
391
  */
474
392
  protected _runRequestHandler(crawlingContext: CheerioCrawlingContext<JSONData>): Promise<void>;
475
393
  protected _handleNavigation(crawlingContext: CheerioCrawlingContext<JSONData>): Promise<void>;
@@ -545,5 +463,30 @@ interface RequestFunctionOptions {
545
463
  proxyUrl?: string;
546
464
  gotOptions: OptionsInit;
547
465
  }
466
+ /**
467
+ * Creates new {@link Router} instance that works based on request labels.
468
+ * This instance can then serve as a `requestHandler` of your {@link CheerioCrawler}.
469
+ * Defaults to the {@link CheerioCrawlingContext}.
470
+ *
471
+ * > Serves as a shortcut for using `Router.create<CheerioCrawlingContext>()`.
472
+ *
473
+ * ```ts
474
+ * import { CheerioCrawler, createCheerioRouter } from 'crawlee';
475
+ *
476
+ * const router = createCheerioRouter();
477
+ * router.addHandler('label-a', async (ctx) => {
478
+ * ctx.log.info('...');
479
+ * });
480
+ * router.addDefaultHandler(async (ctx) => {
481
+ * ctx.log.info('...');
482
+ * });
483
+ *
484
+ * const crawler = new CheerioCrawler({
485
+ * requestHandler: router,
486
+ * });
487
+ * await crawler.run();
488
+ * ```
489
+ */
490
+ export declare function createCheerioRouter<Context extends CheerioCrawlingContext = CheerioCrawlingContext>(): import("@crawlee/basic").RouterHandler<Context>;
548
491
  export {};
549
492
  //# sourceMappingURL=cheerio-crawler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cheerio-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/cheerio-crawler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cheerio-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/cheerio-crawler.ts"],"names":[],"mappings":";;AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACH,YAAY,EAEf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACR,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,OAAO,EACP,YAAY,EACZ,OAAO,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,gBAAgB,EAMnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAiC,QAAQ,IAAI,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAIxH,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,MAAM,CAAC;AAoBjE,oBAAY,2BAA2B,CAAC,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAE7I,MAAM,WAAW,qBAAqB,CAAC,QAAQ,GAAG,UAAU,CAAE,SAAQ,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAE1H,gBAAgB,GAChB,uBAAuB,GAEvB,sBAAsB,GACtB,6BAA6B,GAC7B,0BAA0B,GAE1B,cAAc,CACnB;IACG;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAErD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAErD;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAE7D;;;;;;;;;;;;OAYG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAEpE;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE7C;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE9C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB,CAAC,QAAQ,GAAG,UAAU;IACvD;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACtC;AAED,oBAAY,cAAc,CAAC,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAChH,oBAAY,WAAW,CAAC,QAAQ,GAAG,UAAU,IAAI,CAC7C,eAAe,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EACjD,UAAU,EAAE,WAAW,KACtB,SAAS,CAAC,IAAI,CAAC,CAAC;AAErB,MAAM,WAAW,kBAAkB,CAAC,QAAQ,GAAG,UAAU;IACrD;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACrC;AAED,oBAAY,YAAY,CAAC,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAE5G,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IAC/G;;OAEG;IACH,CAAC,EAAE,WAAW,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAExB;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;OAEG;IACH,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,iCAAiC,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC/F,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5F;AAED,oBAAY,qBAAqB,CAAC,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AACzH,oBAAY,iCAAiC,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH,qBAAa,cAAc,CAAC,QAAQ,GAAG,UAAU,CAAE,SAAQ,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACrG;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,SAAS,CAAC,+BAA+B,EAAE,MAAM,CAAC;IAClD,SAAS,CAAC,kBAAkB,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,SAAS,CAAC,mBAAmB,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvD,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC5C,SAAS,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC3C,SAAS,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEnD,iBAA0B,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAcpC;IAEF;;OAEG;gBACS,OAAO,GAAE,qBAAqB,CAAC,QAAQ,CAAM;IAgFzD;;;;OAIG;IACH,GAAG,CAAC,SAAS,EAAE,gBAAgB;IA4B/B;;OAEG;cACsB,kBAAkB,CAAC,eAAe,EAAE,sBAAsB,CAAC,QAAQ,CAAC;cA2E7E,iBAAiB,CAAC,eAAe,EAAE,sBAAsB,CAAC,QAAQ,CAAC;IA2BnF;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;OAIG;cACa,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;IAe9H;;OAEG;cACa,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe;;;;;;;;;;;;;;;;;;;IA6BhF;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW;kBACzD,IAAI;;IA+BxD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,GAAG;QAC9F,QAAQ,EAAE,cAAc,CAAC;QACzB,QAAQ,EAAE,eAAe,CAAC;KAC7B;cAqCe,eAAe,CAAC,QAAQ,EAAE,eAAe;IAczD;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,YAAY,CAAC,EAAE;IAWhG;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,OAAO;IAKjD,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB,CASvB;CACL;AAED,UAAU,2BAA2B;IACjC,OAAO,CAAC,EAAE,iCAAiC,CAAC;IAC5C,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,gBAAgB;AAChB,wBAAsB,0BAA0B,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,EAAE,2BAA2B,mCAoB9I;AAED,UAAU,sBAAsB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,WAAW,CAAC;CAC3B;AAsED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,qDAElG"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cheerioCrawlerEnqueueLinks = exports.CheerioCrawler = void 0;
3
+ exports.createCheerioRouter = exports.cheerioCrawlerEnqueueLinks = exports.CheerioCrawler = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const timeout_1 = require("@apify/timeout");
6
6
  const utilities_1 = require("@apify/utilities");
@@ -82,18 +82,15 @@ const CHEERIO_OPTIMIZED_AUTOSCALED_POOL_OPTIONS = {
82
82
  *
83
83
  * ```javascript
84
84
  * // Prepare a list of URLs to crawl
85
- * const requestList = new RequestList({
86
- * sources: [
87
- * { url: 'http://www.example.com/page-1' },
88
- * { url: 'http://www.example.com/page-2' },
89
- * ],
90
- * });
91
- * await requestList.initialize();
85
+ * const requestList = await RequestList.open(null, [
86
+ * { url: 'http://www.example.com/page-1' },
87
+ * { url: 'http://www.example.com/page-2' },
88
+ * ]);
92
89
  *
93
90
  * // Crawl the URLs
94
91
  * const crawler = new CheerioCrawler({
95
92
  * requestList,
96
- * handlePageFunction: async ({ request, response, body, contentType, $ }) => {
93
+ * async requestHandler({ request, response, body, contentType, $ }) {
97
94
  * const data = [];
98
95
  *
99
96
  * // Do some data extraction from the page with Cheerio.
@@ -102,7 +99,7 @@ const CHEERIO_OPTIMIZED_AUTOSCALED_POOL_OPTIONS = {
102
99
  * });
103
100
  *
104
101
  * // Save the data to dataset.
105
- * await Actor.pushData({
102
+ * await Dataset.pushData({
106
103
  * url: request.url,
107
104
  * html: body,
108
105
  * data,
@@ -118,9 +115,9 @@ class CheerioCrawler extends basic_1.BasicCrawler {
118
115
  /**
119
116
  * All `CheerioCrawler` parameters are passed via an options object.
120
117
  */
121
- constructor(options) {
118
+ constructor(options = {}) {
122
119
  (0, ow_1.default)(options, 'CheerioCrawlerOptions', ow_1.default.object.exactShape(CheerioCrawler.optionsShape));
123
- const { requestHandler, handlePageFunction, requestHandlerTimeoutSecs = 60, requestTimeoutSecs = 30, ignoreSslErrors = true, additionalMimeTypes = [], suggestResponseEncoding, forceResponseEncoding, proxyConfiguration, persistCookiesPerSession, preNavigationHooks = [], postNavigationHooks = [],
120
+ const { requestHandler, handlePageFunction, requestHandlerTimeoutSecs = 60, navigationTimeoutSecs = 30, ignoreSslErrors = true, additionalMimeTypes = [], suggestResponseEncoding, forceResponseEncoding, proxyConfiguration, persistCookiesPerSession, preNavigationHooks = [], postNavigationHooks = [],
124
121
  // Ignored
125
122
  handleRequestFunction,
126
123
  // BasicCrawler
@@ -132,7 +129,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
132
129
  autoscaledPoolOptions,
133
130
  // We need to add some time for internal functions to finish,
134
131
  // but not too much so that we would stall the crawler.
135
- requestHandlerTimeoutSecs: requestTimeoutSecs + requestHandlerTimeoutSecs + basic_1.BASIC_CRAWLER_TIMEOUT_BUFFER_SECS,
132
+ requestHandlerTimeoutSecs: navigationTimeoutSecs + requestHandlerTimeoutSecs + basic_1.BASIC_CRAWLER_TIMEOUT_BUFFER_SECS,
136
133
  });
137
134
  /**
138
135
  * A reference to the underlying {@link ProxyConfiguration} class that manages the crawler's proxies.
@@ -168,7 +165,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
168
165
  writable: true,
169
166
  value: void 0
170
167
  });
171
- Object.defineProperty(this, "requestTimeoutMillis", {
168
+ Object.defineProperty(this, "navigationTimeoutMillis", {
172
169
  enumerable: true,
173
170
  configurable: true,
174
171
  writable: true,
@@ -221,7 +218,11 @@ class CheerioCrawler extends basic_1.BasicCrawler {
221
218
  propertyKey: 'requestHandler',
222
219
  newProperty: requestHandler,
223
220
  oldProperty: handlePageFunction,
221
+ allowUndefined: true,
224
222
  });
223
+ if (!this.requestHandler) {
224
+ this.requestHandler = this.router;
225
+ }
225
226
  // Cookies should be persisted per session only if session pool is used
226
227
  if (!this.useSessionPool && persistCookiesPerSession) {
227
228
  throw new Error('You cannot use "persistCookiesPerSession" without "useSessionPool" set to true.');
@@ -233,7 +234,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
233
234
  this.log.warning('Both forceResponseEncoding and suggestResponseEncoding options are set. Using forceResponseEncoding.');
234
235
  }
235
236
  this.userRequestHandlerTimeoutMillis = requestHandlerTimeoutSecs * 1000;
236
- this.requestTimeoutMillis = requestTimeoutSecs * 1000;
237
+ this.navigationTimeoutMillis = navigationTimeoutSecs * 1000;
237
238
  this.ignoreSslErrors = ignoreSslErrors;
238
239
  this.suggestResponseEncoding = suggestResponseEncoding;
239
240
  this.forceResponseEncoding = forceResponseEncoding;
@@ -275,7 +276,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
275
276
  }
276
277
  }
277
278
  /**
278
- * Wrapper around handlePageFunction that opens and closes pages etc.
279
+ * Wrapper around requestHandler that opens and closes pages etc.
279
280
  */
280
281
  async _runRequestHandler(crawlingContext) {
281
282
  const { request, session } = crawlingContext;
@@ -349,7 +350,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
349
350
  const postNavigationHooksCookies = this._getCookieHeaderFromRequest(request);
350
351
  this._applyCookies(crawlingContext, gotOptions, preNavigationHooksCookies, postNavigationHooksCookies);
351
352
  const proxyUrl = crawlingContext.proxyInfo?.url;
352
- crawlingContext.response = await (0, timeout_1.addTimeoutToPromise)(() => this._requestFunction({ request, session, proxyUrl, gotOptions }), this.requestTimeoutMillis, `request timed out after ${this.requestTimeoutMillis / 1000} seconds.`);
353
+ crawlingContext.response = await (0, timeout_1.addTimeoutToPromise)(() => this._requestFunction({ request, session, proxyUrl, gotOptions }), this.navigationTimeoutMillis, `request timed out after ${this.navigationTimeoutMillis / 1000} seconds.`);
353
354
  (0, timeout_1.tryCancel)();
354
355
  await this._executeHooks(this.postNavigationHooks, crawlingContext, gotOptions);
355
356
  (0, timeout_1.tryCancel)();
@@ -421,7 +422,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
421
422
  url: request.url,
422
423
  method: request.method,
423
424
  proxyUrl,
424
- timeout: { request: this.requestTimeoutMillis },
425
+ timeout: { request: this.navigationTimeoutMillis },
425
426
  sessionToken: session,
426
427
  ...gotOptions,
427
428
  headers: { ...request.headers, ...gotOptions?.headers },
@@ -434,7 +435,7 @@ class CheerioCrawler extends basic_1.BasicCrawler {
434
435
  // TODO this is incorrect, the check for man in the middle needs to be done
435
436
  // on individual proxy level, not on the `proxyConfiguration` level,
436
437
  // because users can use normal + MITM proxies in a single configuration.
437
- // Disable SSL verification for MITM proxies
438
+ // Disable SSL verification for MITM proxies
438
439
  if (this.proxyConfiguration && this.proxyConfiguration.isManInTheMiddle) {
439
440
  requestOptions.https = {
440
441
  ...requestOptions.https,
@@ -534,7 +535,7 @@ Object.defineProperty(CheerioCrawler, "optionsShape", {
534
535
  value: {
535
536
  ...basic_1.BasicCrawler.optionsShape,
536
537
  handlePageFunction: ow_1.default.optional.function,
537
- requestTimeoutSecs: ow_1.default.optional.number,
538
+ navigationTimeoutSecs: ow_1.default.optional.number,
538
539
  ignoreSslErrors: ow_1.default.optional.boolean,
539
540
  additionalMimeTypes: ow_1.default.optional.array.ofType(ow_1.default.string),
540
541
  suggestResponseEncoding: ow_1.default.optional.string,
@@ -581,10 +582,19 @@ function extractUrlsFromCheerio($, selector, baseUrl) {
581
582
  throw new Error(`An extracted URL: ${href} is relative and options.baseUrl is not set. `
582
583
  + 'Use options.baseUrl in enqueueLinks() to automatically resolve relative URLs.');
583
584
  }
585
+ const tryAbsolute = () => {
586
+ try {
587
+ return (new URL(href, baseUrl)).href;
588
+ }
589
+ catch {
590
+ return undefined;
591
+ }
592
+ };
584
593
  return baseUrl
585
- ? (new URL(href, baseUrl)).href
594
+ ? tryAbsolute()
586
595
  : href;
587
- });
596
+ })
597
+ .filter((href) => !!href);
588
598
  }
589
599
  /**
590
600
  * The stream object returned from got does not have the below properties.
@@ -618,4 +628,32 @@ function addResponsePropertiesToStream(stream) {
618
628
  }
619
629
  return stream;
620
630
  }
631
+ /**
632
+ * Creates new {@link Router} instance that works based on request labels.
633
+ * This instance can then serve as a `requestHandler` of your {@link CheerioCrawler}.
634
+ * Defaults to the {@link CheerioCrawlingContext}.
635
+ *
636
+ * > Serves as a shortcut for using `Router.create<CheerioCrawlingContext>()`.
637
+ *
638
+ * ```ts
639
+ * import { CheerioCrawler, createCheerioRouter } from 'crawlee';
640
+ *
641
+ * const router = createCheerioRouter();
642
+ * router.addHandler('label-a', async (ctx) => {
643
+ * ctx.log.info('...');
644
+ * });
645
+ * router.addDefaultHandler(async (ctx) => {
646
+ * ctx.log.info('...');
647
+ * });
648
+ *
649
+ * const crawler = new CheerioCrawler({
650
+ * requestHandler: router,
651
+ * });
652
+ * await crawler.run();
653
+ * ```
654
+ */
655
+ function createCheerioRouter() {
656
+ return core_1.Router.create();
657
+ }
658
+ exports.createCheerioRouter = createCheerioRouter;
621
659
  //# sourceMappingURL=cheerio-crawler.js.map