@crawlee/basic 4.0.0-beta.13 → 4.0.0-beta.15
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 +5 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/internals/basic-crawler.d.ts +84 -28
- package/internals/basic-crawler.d.ts.map +1 -1
- package/internals/basic-crawler.js +249 -115
- package/internals/basic-crawler.js.map +1 -1
- package/package.json +5 -5
- 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
|
|
package/index.d.ts
CHANGED
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { AddRequestsBatchedOptions, AddRequestsBatchedResult, AutoscaledPoolOptions, BaseHttpClient, CrawlingContext, DatasetExportOptions, EventManager, FinalStatistics, GetUserDataFromRequest, IRequestList, ProxyConfiguration, ProxyInfo, Request,
|
|
1
|
+
import type { AddRequestsBatchedOptions, AddRequestsBatchedResult, AutoscaledPoolOptions, BaseHttpClient, CrawlingContext, DatasetExportOptions, EnqueueLinksOptions, EventManager, FinalStatistics, GetUserDataFromRequest, IRequestList, IRequestManager, ProxyConfiguration, ProxyInfo, Request, RequestsLike, RouterHandler, RouterRoutes, Session, SessionPoolOptions, SkippedRequestCallback, Source, StatisticsOptions, StatisticState } from '@crawlee/core';
|
|
2
2
|
import { AutoscaledPool, Configuration, ContextPipeline, Dataset, RequestProvider, SessionPool, Statistics } from '@crawlee/core';
|
|
3
|
-
import type { Awaitable, Dictionary, SetStatusMessageOptions } from '@crawlee/types';
|
|
3
|
+
import type { Awaitable, BatchAddRequestsResult, Dictionary, SetStatusMessageOptions } from '@crawlee/types';
|
|
4
4
|
import { RobotsTxtFile } from '@crawlee/utils';
|
|
5
|
-
import type { ReadonlyDeep } from 'type-fest';
|
|
5
|
+
import type { ReadonlyDeep, SetRequired } from 'type-fest';
|
|
6
6
|
import type { Log } from '@apify/log';
|
|
7
7
|
import { TimeoutError } from '@apify/timeout';
|
|
8
8
|
export interface BasicCrawlingContext<UserData extends Dictionary = Dictionary> extends CrawlingContext<UserData> {
|
|
@@ -80,6 +80,13 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = CrawlingC
|
|
|
80
80
|
* it is a shortcut for running `crawler.addRequests()` before the `crawler.run()`.
|
|
81
81
|
*/
|
|
82
82
|
requestQueue?: RequestProvider;
|
|
83
|
+
/**
|
|
84
|
+
* Allows explicitly configuring a request manager. Mutually exclusive with the `requestQueue` and `requestList` options.
|
|
85
|
+
*
|
|
86
|
+
* This enables explicitly configuring the crawler to use `RequestManagerTandem`, for instance.
|
|
87
|
+
* If using this, the type of `BasicCrawler.requestQueue` may not be fully compatible with the `RequestProvider` class.
|
|
88
|
+
*/
|
|
89
|
+
requestManager?: IRequestManager;
|
|
83
90
|
/**
|
|
84
91
|
* Timeout in which the function passed as {@link BasicCrawlerOptions.requestHandler|`requestHandler`} needs to finish, in seconds.
|
|
85
92
|
* @default 60
|
|
@@ -133,12 +140,18 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = CrawlingC
|
|
|
133
140
|
* > *NOTE:* In cases of parallel crawling, the actual number of pages visited might be slightly higher than this value.
|
|
134
141
|
*/
|
|
135
142
|
maxRequestsPerCrawl?: number;
|
|
143
|
+
/**
|
|
144
|
+
* Maximum depth of the crawl. If not set, the crawl will continue until all requests are processed.
|
|
145
|
+
* Setting this to `0` will only process the initial requests, skipping all links enqueued by `crawlingContext.enqueueLinks` and `crawlingContext.addRequests`.
|
|
146
|
+
* Passing `1` will process the initial requests and all links enqueued by `crawlingContext.enqueueLinks` and `crawlingContext.addRequests` in the handler for initial requests.
|
|
147
|
+
*/
|
|
148
|
+
maxCrawlDepth?: number;
|
|
136
149
|
/**
|
|
137
150
|
* Custom options passed to the underlying {@link AutoscaledPool} constructor.
|
|
138
151
|
* > *NOTE:* The {@link AutoscaledPoolOptions.runTaskFunction|`runTaskFunction`}
|
|
139
|
-
* and
|
|
140
|
-
*
|
|
141
|
-
*
|
|
152
|
+
* option is provided by the crawler and cannot be overridden.
|
|
153
|
+
* However, we can provide custom implementations of {@link AutoscaledPoolOptions.isFinishedFunction|`isFinishedFunction`}
|
|
154
|
+
* and {@link AutoscaledPoolOptions.isTaskReadyFunction|`isTaskReadyFunction`}.
|
|
142
155
|
*/
|
|
143
156
|
autoscaledPoolOptions?: AutoscaledPoolOptions;
|
|
144
157
|
/**
|
|
@@ -206,11 +219,20 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = CrawlingC
|
|
|
206
219
|
/**
|
|
207
220
|
* If set to `true`, the crawler will automatically try to fetch the robots.txt file for each domain,
|
|
208
221
|
* and skip those that are not allowed. This also prevents disallowed URLs to be added via `enqueueLinks`.
|
|
222
|
+
*
|
|
223
|
+
* If an object is provided, it may contain a `userAgent` property to specify which user-agent
|
|
224
|
+
* should be used when checking the robots.txt file. If not provided, the default user-agent `*` will be used.
|
|
209
225
|
*/
|
|
210
|
-
respectRobotsTxtFile?: boolean
|
|
226
|
+
respectRobotsTxtFile?: boolean | {
|
|
227
|
+
userAgent?: string;
|
|
228
|
+
};
|
|
211
229
|
/**
|
|
212
230
|
* When a request is skipped for some reason, you can use this callback to act on it.
|
|
213
|
-
* This is currently fired
|
|
231
|
+
* This is currently fired for requests skipped
|
|
232
|
+
* 1. based on robots.txt file,
|
|
233
|
+
* 2. because they don't match enqueueLinks filters,
|
|
234
|
+
* 3. because they are redirected to a URL that doesn't match the enqueueLinks strategy,
|
|
235
|
+
* 4. or because the {@link BasicCrawlerOptions.maxRequestsPerCrawl|`maxRequestsPerCrawl`} limit has been reached
|
|
214
236
|
*/
|
|
215
237
|
onSkippedRequest?: SkippedRequestCallback;
|
|
216
238
|
/** @internal */
|
|
@@ -333,6 +355,10 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
333
355
|
* Only available if used by the crawler.
|
|
334
356
|
*/
|
|
335
357
|
requestQueue?: RequestProvider;
|
|
358
|
+
/**
|
|
359
|
+
* The main request-handling component of the crawler. It's initialized during the crawler startup.
|
|
360
|
+
*/
|
|
361
|
+
protected requestManager?: IRequestManager;
|
|
336
362
|
/**
|
|
337
363
|
* A reference to the underlying {@link SessionPool} class that manages the crawler's {@link Session|sessions}.
|
|
338
364
|
* Only available if used by the crawler.
|
|
@@ -368,9 +394,11 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
368
394
|
protected requestHandlerTimeoutMillis: number;
|
|
369
395
|
protected internalTimeoutMillis: number;
|
|
370
396
|
protected maxRequestRetries: number;
|
|
397
|
+
protected maxCrawlDepth?: number;
|
|
371
398
|
protected sameDomainDelayMillis: number;
|
|
372
399
|
protected domainAccessedTime: Map<string, number>;
|
|
373
400
|
protected maxSessionRotations: number;
|
|
401
|
+
protected maxRequestsPerCrawl?: number;
|
|
374
402
|
protected handledRequestsCount: number;
|
|
375
403
|
protected statusMessageLoggingInterval: number;
|
|
376
404
|
protected statusMessageCallback?: StatusMessageCallback;
|
|
@@ -380,9 +408,13 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
380
408
|
protected events: EventManager;
|
|
381
409
|
protected httpClient: BaseHttpClient;
|
|
382
410
|
protected retryOnBlocked: boolean;
|
|
383
|
-
protected respectRobotsTxtFile: boolean
|
|
411
|
+
protected respectRobotsTxtFile: boolean | {
|
|
412
|
+
userAgent?: string;
|
|
413
|
+
};
|
|
384
414
|
protected onSkippedRequest?: SkippedRequestCallback;
|
|
385
415
|
private _closeEvents?;
|
|
416
|
+
private shouldLogMaxProcessedRequestsExceeded;
|
|
417
|
+
private shouldLogMaxEnqueuedRequestsExceeded;
|
|
386
418
|
private experiments;
|
|
387
419
|
private readonly robotsTxtFileCache;
|
|
388
420
|
private _experimentWarnings;
|
|
@@ -411,6 +443,8 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
411
443
|
maxSessionRotations: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
412
444
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
413
445
|
maxRequestsPerCrawl: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
446
|
+
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
447
|
+
maxCrawlDepth: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
414
448
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
415
449
|
autoscaledPoolOptions: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
416
450
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
@@ -426,7 +460,7 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
426
460
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
427
461
|
retryOnBlocked: import("ow").BooleanPredicate & import("ow").BasePredicate<boolean | undefined>;
|
|
428
462
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
429
|
-
respectRobotsTxtFile: import("ow").
|
|
463
|
+
respectRobotsTxtFile: import("ow").AnyPredicate<boolean | object>;
|
|
430
464
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
431
465
|
onSkippedRequest: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
432
466
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
@@ -473,15 +507,20 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
473
507
|
* @param [requests] The requests to add.
|
|
474
508
|
* @param [options] Options for the request queue.
|
|
475
509
|
*/
|
|
476
|
-
run(requests?:
|
|
510
|
+
run(requests?: RequestsLike, options?: CrawlerRunOptions): Promise<FinalStatistics>;
|
|
477
511
|
/**
|
|
478
512
|
* Gracefully stops the current run of the crawler.
|
|
479
513
|
*
|
|
480
514
|
* All the tasks active at the time of calling this method will be allowed to finish.
|
|
515
|
+
*
|
|
516
|
+
* To stop the crawler immediately, use {@link BasicCrawler.teardown|`crawler.teardown()`} instead.
|
|
481
517
|
*/
|
|
482
518
|
stop(message?: string): void;
|
|
483
519
|
getRequestQueue(): Promise<RequestProvider>;
|
|
484
520
|
useState<State extends Dictionary = Dictionary>(defaultValue?: State): Promise<State>;
|
|
521
|
+
protected get pendingRequestCountApproximation(): number;
|
|
522
|
+
protected calculateEnqueuedRequestLimit(explicitLimit?: number): number | undefined;
|
|
523
|
+
protected handleSkippedRequest(options: Parameters<SkippedRequestCallback>[0]): Promise<void>;
|
|
485
524
|
/**
|
|
486
525
|
* Adds requests to the queue in batches. By default, it will resolve after the initial batch is added, and continue
|
|
487
526
|
* adding the rest in background. You can configure the batch size via `batchSize` option and the sleep time in between
|
|
@@ -493,7 +532,7 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
493
532
|
* @param requests The requests to add
|
|
494
533
|
* @param options Options for the request queue
|
|
495
534
|
*/
|
|
496
|
-
addRequests(requests: ReadonlyDeep<
|
|
535
|
+
addRequests(requests: ReadonlyDeep<RequestsLike>, options?: CrawlerAddRequestsOptions): Promise<CrawlerAddRequestsResult>;
|
|
497
536
|
/**
|
|
498
537
|
* Pushes data to the specified {@link Dataset}, or the default crawler {@link Dataset} by calling {@link Dataset.pushData}.
|
|
499
538
|
*/
|
|
@@ -511,6 +550,9 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
511
550
|
* Supported formats are currently 'json' and 'csv', and will be inferred from the `path` automatically.
|
|
512
551
|
*/
|
|
513
552
|
exportData<Data>(path: string, format?: 'json' | 'csv', options?: DatasetExportOptions): Promise<Data[]>;
|
|
553
|
+
/**
|
|
554
|
+
* Initializes the crawler.
|
|
555
|
+
*/
|
|
514
556
|
protected _init(): Promise<void>;
|
|
515
557
|
protected runRequestHandler(crawlingContext: CrawlingContext): Promise<void>;
|
|
516
558
|
/**
|
|
@@ -521,26 +563,42 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
521
563
|
protected getRobotsTxtFileForUrl(url: string): Promise<RobotsTxtFile | undefined>;
|
|
522
564
|
protected _pauseOnMigration(): Promise<void>;
|
|
523
565
|
/**
|
|
524
|
-
*
|
|
525
|
-
|
|
566
|
+
* Initializes the RequestManager based on the configured requestList and requestQueue.
|
|
567
|
+
*/
|
|
568
|
+
private initializeRequestManager;
|
|
569
|
+
/**
|
|
570
|
+
* Fetches the next request to process from the underlying request provider.
|
|
526
571
|
*/
|
|
527
|
-
protected _fetchNextRequest(): Promise<Request<Dictionary> | null
|
|
572
|
+
protected _fetchNextRequest(): Promise<Request<Dictionary> | null>;
|
|
528
573
|
/**
|
|
529
574
|
* Delays processing of the request based on the `sameDomainDelaySecs` option,
|
|
530
575
|
* adding it back to the queue after the timeout passes. Returns `true` if the request
|
|
531
576
|
* should be ignored and will be reclaimed to the queue once ready.
|
|
532
577
|
*/
|
|
533
|
-
protected delayRequest(request: Request, source: IRequestList | RequestProvider): boolean;
|
|
578
|
+
protected delayRequest(request: Request, source: IRequestList | RequestProvider | IRequestManager): boolean;
|
|
534
579
|
/**
|
|
535
580
|
* Wrapper around requestHandler that fetches requests from RequestList/RequestQueue
|
|
536
581
|
* then retries them in a case of an error, etc.
|
|
537
582
|
*/
|
|
538
583
|
protected _runTaskFunction(): Promise<void>;
|
|
539
584
|
/**
|
|
540
|
-
*
|
|
585
|
+
* Wrapper around the crawling context's `enqueueLinks` method:
|
|
586
|
+
* - Injects `crawlDepth` to each request being added based on the crawling context request.
|
|
587
|
+
* - Provides defaults for the `enqueueLinks` options based on the crawler configuration.
|
|
588
|
+
* - These options can be overridden by the user.
|
|
589
|
+
* @internal
|
|
590
|
+
*/
|
|
591
|
+
protected enqueueLinksWithCrawlDepth(options: SetRequired<EnqueueLinksOptions, 'urls'>, request: Request<Dictionary>, requestQueue: RequestProvider): Promise<BatchAddRequestsResult>;
|
|
592
|
+
/**
|
|
593
|
+
* Generator function that yields requests injected with the given crawl depth.
|
|
594
|
+
* @internal
|
|
595
|
+
*/
|
|
596
|
+
protected addCrawlDepthRequestGenerator(requests: RequestsLike, newRequestDepth: number): AsyncGenerator<Source, void, undefined>;
|
|
597
|
+
/**
|
|
598
|
+
* Run async callback with given timeout and retry. Returns the result of the callback.
|
|
541
599
|
* @ignore
|
|
542
600
|
*/
|
|
543
|
-
protected _timeoutAndRetry(handler: () => Promise<
|
|
601
|
+
protected _timeoutAndRetry<T>(handler: () => Promise<T>, timeout: number, error: Error | string, maxRetries?: number, retried?: number): Promise<T>;
|
|
544
602
|
/**
|
|
545
603
|
* Returns true if either RequestList or RequestQueue have a request ready for processing.
|
|
546
604
|
*/
|
|
@@ -558,7 +616,7 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
558
616
|
/**
|
|
559
617
|
* Handles errors thrown by user provided requestHandler()
|
|
560
618
|
*/
|
|
561
|
-
protected _requestFunctionErrorHandler(error: Error, crawlingContext: CrawlingContext, source: IRequestList |
|
|
619
|
+
protected _requestFunctionErrorHandler(error: Error, crawlingContext: CrawlingContext, source: IRequestList | IRequestManager): Promise<void>;
|
|
562
620
|
protected _tagUserHandlerError<T>(cb: () => unknown): Promise<T>;
|
|
563
621
|
protected _handleFailedRequestHandler(crawlingContext: CrawlingContext, error: Error): Promise<void>;
|
|
564
622
|
/**
|
|
@@ -569,23 +627,21 @@ export declare class BasicCrawler<Context extends CrawlingContext = CrawlingCont
|
|
|
569
627
|
protected _getMessageFromError(error: Error, forceStack?: boolean): string | TimeoutError | undefined;
|
|
570
628
|
protected _canRequestBeRetried(request: Request, error: Error): boolean;
|
|
571
629
|
/**
|
|
572
|
-
* Updates handledRequestsCount from possibly stored counts,
|
|
573
|
-
* usually after worker migration. Since one of the stores
|
|
574
|
-
* needs to have priority when both are present,
|
|
575
|
-
* it is the request queue, because generally, the request
|
|
576
|
-
* list will first be dumped into the queue and then left
|
|
577
|
-
* empty.
|
|
630
|
+
* Updates handledRequestsCount from possibly stored counts, usually after worker migration.
|
|
578
631
|
*/
|
|
579
632
|
protected _loadHandledRequestCount(): Promise<void>;
|
|
580
633
|
protected _executeHooks<HookLike extends (...args: any[]) => Awaitable<void>>(hooks: HookLike[], ...args: Parameters<HookLike>): Promise<void>;
|
|
581
634
|
/**
|
|
582
|
-
*
|
|
583
|
-
*
|
|
635
|
+
* Stops the crawler immediately.
|
|
636
|
+
*
|
|
637
|
+
* This method doesn't wait for currently active requests to finish.
|
|
638
|
+
*
|
|
639
|
+
* To stop the crawler gracefully (waiting for all running requests to finish), use {@link BasicCrawler.stop|`crawler.stop()`} instead.
|
|
584
640
|
*/
|
|
585
641
|
teardown(): Promise<void>;
|
|
586
642
|
protected _getCookieHeaderFromRequest(request: Request): string;
|
|
587
643
|
private _getRequestQueue;
|
|
588
|
-
|
|
644
|
+
private requestMatchesEnqueueStrategy;
|
|
589
645
|
}
|
|
590
646
|
export interface CreateContextOptions {
|
|
591
647
|
request: Request;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/basic-crawler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"basic-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/basic-crawler.ts"],"names":[],"mappings":"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"}
|