@crawlee/utils 4.0.0-beta.7 → 4.0.0-beta.71
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 +17 -13
- package/index.d.ts +8 -4
- package/index.d.ts.map +1 -1
- package/index.js +5 -3
- package/index.js.map +1 -1
- package/internals/cheerio.d.ts +3 -1
- package/internals/cheerio.d.ts.map +1 -1
- package/internals/cheerio.js +4 -4
- package/internals/cheerio.js.map +1 -1
- package/internals/debug.d.ts +11 -0
- package/internals/debug.d.ts.map +1 -1
- package/internals/debug.js +34 -0
- package/internals/debug.js.map +1 -1
- package/internals/extract-urls.d.ts +5 -0
- package/internals/extract-urls.d.ts.map +1 -1
- package/internals/extract-urls.js +8 -4
- package/internals/extract-urls.js.map +1 -1
- package/internals/general.d.ts +17 -0
- package/internals/general.d.ts.map +1 -1
- package/internals/general.js +42 -0
- package/internals/general.js.map +1 -1
- package/internals/iterables.d.ts +127 -0
- package/internals/iterables.d.ts.map +1 -0
- package/internals/iterables.js +222 -0
- package/internals/iterables.js.map +1 -0
- package/internals/open_graph_parser.d.ts +2 -2
- package/internals/open_graph_parser.d.ts.map +1 -1
- package/internals/open_graph_parser.js +2 -2
- package/internals/open_graph_parser.js.map +1 -1
- package/internals/robots.d.ts +20 -3
- package/internals/robots.d.ts.map +1 -1
- package/internals/robots.js +31 -32
- package/internals/robots.js.map +1 -1
- package/internals/sitemap.d.ts +57 -6
- package/internals/sitemap.d.ts.map +1 -1
- package/internals/sitemap.js +160 -30
- package/internals/sitemap.js.map +1 -1
- package/internals/social.d.ts +1 -1
- package/internals/social.d.ts.map +1 -1
- package/internals/social.js +3 -3
- package/internals/social.js.map +1 -1
- package/internals/{systemInfoV2 → system-info}/cpu-info.d.ts +5 -1
- package/internals/system-info/cpu-info.d.ts.map +1 -0
- package/internals/{systemInfoV2 → system-info}/cpu-info.js +17 -12
- package/internals/system-info/cpu-info.js.map +1 -0
- package/internals/{systemInfoV2 → system-info}/memory-info.d.ts +5 -1
- package/internals/system-info/memory-info.d.ts.map +1 -0
- package/internals/{systemInfoV2 → system-info}/memory-info.js +3 -5
- package/internals/system-info/memory-info.js.map +1 -0
- package/internals/system-info/ps-tree.d.ts.map +1 -0
- package/internals/system-info/ps-tree.js.map +1 -0
- package/internals/url.d.ts +1 -1
- package/internals/url.d.ts.map +1 -1
- package/package.json +6 -6
- package/internals/memory-info.d.ts +0 -26
- package/internals/memory-info.d.ts.map +0 -1
- package/internals/memory-info.js +0 -131
- package/internals/memory-info.js.map +0 -1
- package/internals/systemInfoV2/cpu-info.d.ts.map +0 -1
- package/internals/systemInfoV2/cpu-info.js.map +0 -1
- package/internals/systemInfoV2/memory-info.d.ts.map +0 -1
- package/internals/systemInfoV2/memory-info.js.map +0 -1
- package/internals/systemInfoV2/ps-tree.d.ts.map +0 -1
- package/internals/systemInfoV2/ps-tree.js.map +0 -1
- package/tsconfig.build.tsbuildinfo +0 -1
- /package/internals/{systemInfoV2 → system-info}/ps-tree.d.ts +0 -0
- /package/internals/{systemInfoV2 → system-info}/ps-tree.js +0 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { inspect } from 'node:util';
|
|
2
|
+
/**
|
|
3
|
+
* Type guard that checks if a value is iterable (has Symbol.iterator).
|
|
4
|
+
* @internal
|
|
5
|
+
*
|
|
6
|
+
* **Example usage:**
|
|
7
|
+
* ```ts
|
|
8
|
+
* if (isIterable(someValue)) {
|
|
9
|
+
* for (const item of someValue) {
|
|
10
|
+
* console.log(item);
|
|
11
|
+
* }
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export function isIterable(value) {
|
|
16
|
+
if (value == null || typeof value === 'string' || ArrayBuffer.isView(value)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return typeof Object(value)[Symbol.iterator] === 'function';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Type guard that checks if a value is async iterable (has Symbol.asyncIterator).
|
|
26
|
+
* @internal
|
|
27
|
+
*
|
|
28
|
+
* **Example usage:**
|
|
29
|
+
* ```ts
|
|
30
|
+
* if (isAsyncIterable(someValue)) {
|
|
31
|
+
* for await (const item of someValue) {
|
|
32
|
+
* console.log(item);
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function isAsyncIterable(value) {
|
|
38
|
+
if (value == null || typeof value === 'string' || ArrayBuffer.isView(value)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return typeof Object(value)[Symbol.asyncIterator] === 'function';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Converts any iterable or async iterable to an async iterable.
|
|
45
|
+
* @internal
|
|
46
|
+
*
|
|
47
|
+
* @yields Each item from the input iterable
|
|
48
|
+
*
|
|
49
|
+
* **Example usage:**
|
|
50
|
+
* ```ts
|
|
51
|
+
* const syncArray = [1, 2, 3];
|
|
52
|
+
* for await (const item of asyncifyIterable(syncArray)) {
|
|
53
|
+
* console.log(item); // 1, 2, 3
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export async function* asyncifyIterable(iterable) {
|
|
58
|
+
yield* iterable;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Lazily splits the input async iterable into chunks of specified size.
|
|
62
|
+
* The last chunk may contain fewer items if the total number of items
|
|
63
|
+
* is not evenly divisible by the chunk size.
|
|
64
|
+
* @internal
|
|
65
|
+
*
|
|
66
|
+
* @yields Arrays of items, each containing up to chunkSize items
|
|
67
|
+
*
|
|
68
|
+
* **Example usage:**
|
|
69
|
+
* ```ts
|
|
70
|
+
* const numbers = async function* () {
|
|
71
|
+
* for (let i = 1; i <= 10; i++) yield i;
|
|
72
|
+
* };
|
|
73
|
+
*
|
|
74
|
+
* for await (const chunk of chunkedAsyncIterable(numbers(), 3)) {
|
|
75
|
+
* console.log(chunk); // [1, 2, 3], [4, 5, 6], [7, 8, 9], [10]
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export async function* chunkedAsyncIterable(iterable, chunkSize) {
|
|
80
|
+
if (typeof chunkSize !== 'number' || chunkSize < 1) {
|
|
81
|
+
throw new Error(`Chunk size must be a positive number (${inspect(chunkSize)}) received`);
|
|
82
|
+
}
|
|
83
|
+
let chunk = [];
|
|
84
|
+
for await (const item of iterable) {
|
|
85
|
+
chunk.push(item);
|
|
86
|
+
if (chunk.length >= chunkSize) {
|
|
87
|
+
yield chunk;
|
|
88
|
+
chunk = [];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (chunk.length) {
|
|
92
|
+
yield chunk;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Wraps an async iterable to provide peek functionality, allowing you to look at
|
|
97
|
+
* the next value without consuming it from the iterator.
|
|
98
|
+
* @internal
|
|
99
|
+
*
|
|
100
|
+
* @param iterable - The async iterable to make peekable
|
|
101
|
+
*
|
|
102
|
+
* **Example usage:**
|
|
103
|
+
* ```ts
|
|
104
|
+
* const numbers = async function* () {
|
|
105
|
+
* yield 1; yield 2; yield 3;
|
|
106
|
+
* };
|
|
107
|
+
*
|
|
108
|
+
* const peekable = peekableAsyncIterable(numbers());
|
|
109
|
+
* const iterator = peekable[Symbol.asyncIterator]();
|
|
110
|
+
*
|
|
111
|
+
* console.log(await iterator.peek()); // 1 (doesn't consume)
|
|
112
|
+
* console.log(await iterator.peek()); // 1 (still doesn't consume)
|
|
113
|
+
* console.log(await iterator.next()); // { value: 1, done: false } (now consumed)
|
|
114
|
+
* console.log(await iterator.peek()); // 2 (next value)
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export function peekableAsyncIterable(iterable) {
|
|
118
|
+
const iterator = asyncifyIterable(iterable)[Symbol.asyncIterator]();
|
|
119
|
+
let peekedValue;
|
|
120
|
+
let isExhausted = false;
|
|
121
|
+
const peekableIterator = {
|
|
122
|
+
async next() {
|
|
123
|
+
// If we have peeked a value, return it and clear the peek
|
|
124
|
+
if (peekedValue !== undefined) {
|
|
125
|
+
const result = peekedValue;
|
|
126
|
+
peekedValue = undefined;
|
|
127
|
+
if (result.done) {
|
|
128
|
+
isExhausted = true;
|
|
129
|
+
return { done: true, value: undefined };
|
|
130
|
+
}
|
|
131
|
+
return { done: false, value: result.value };
|
|
132
|
+
}
|
|
133
|
+
if (isExhausted) {
|
|
134
|
+
return { done: true, value: undefined };
|
|
135
|
+
}
|
|
136
|
+
const result = await iterator.next();
|
|
137
|
+
if (result.done) {
|
|
138
|
+
isExhausted = true;
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
},
|
|
142
|
+
async peek() {
|
|
143
|
+
if (peekedValue !== undefined) {
|
|
144
|
+
return peekedValue.done ? undefined : peekedValue.value;
|
|
145
|
+
}
|
|
146
|
+
if (isExhausted) {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
const result = await iterator.next();
|
|
150
|
+
peekedValue = { done: result.done ?? false, value: result.value };
|
|
151
|
+
if (result.done) {
|
|
152
|
+
isExhausted = true;
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
return result.value;
|
|
156
|
+
},
|
|
157
|
+
[Symbol.asyncIterator]() {
|
|
158
|
+
return this;
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
[Symbol.asyncIterator]() {
|
|
163
|
+
return peekableIterator;
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Source - https://stackoverflow.com/a/71288323
|
|
168
|
+
/**
|
|
169
|
+
* Merges multiple async iterables into a single async iterable, yielding values concurrently.
|
|
170
|
+
*
|
|
171
|
+
* **Example usage:**
|
|
172
|
+
* ```ts
|
|
173
|
+
* const asyncIterable1 = async function* () {
|
|
174
|
+
* yield 1; yield 3; yield 5;
|
|
175
|
+
* };
|
|
176
|
+
*
|
|
177
|
+
* const asyncIterable2 = async function* () {
|
|
178
|
+
* yield 2; yield 4; yield 6;
|
|
179
|
+
* };
|
|
180
|
+
*
|
|
181
|
+
* for await (const value of mergeAsyncIterables(asyncIterable1(), asyncIterable2())) {
|
|
182
|
+
* console.log(value);
|
|
183
|
+
* }
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export async function* mergeAsyncIterables(...iterables) {
|
|
187
|
+
const asyncIterators = iterables.map((iterable) => iterable[Symbol.asyncIterator]());
|
|
188
|
+
const results = [];
|
|
189
|
+
let count = asyncIterators.length;
|
|
190
|
+
const never = new Promise(() => { });
|
|
191
|
+
async function getNext(asyncIterator, index) {
|
|
192
|
+
const result = await asyncIterator.next();
|
|
193
|
+
return {
|
|
194
|
+
index,
|
|
195
|
+
result,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
const nextPromises = asyncIterators.map(getNext);
|
|
199
|
+
try {
|
|
200
|
+
while (count) {
|
|
201
|
+
const { index, result } = await Promise.race(nextPromises);
|
|
202
|
+
if (result.done) {
|
|
203
|
+
nextPromises[index] = never;
|
|
204
|
+
results[index] = result.value;
|
|
205
|
+
count--;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
nextPromises[index] = getNext(asyncIterators[index], index);
|
|
209
|
+
yield result.value;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
finally {
|
|
214
|
+
for (const [index, iterator] of asyncIterators.entries()) {
|
|
215
|
+
// no await here - see https://github.com/tc39/proposal-async-iteration/issues/126
|
|
216
|
+
if (nextPromises[index] !== never && iterator.return != null)
|
|
217
|
+
void iterator.return();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return results;
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=iterables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterables.js","sourceRoot":"","sources":["../../src/internals/iterables.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ type OpenGraphResult = string | string[] | Dictionary<string | Dictionary>;
|
|
|
14
14
|
* Currently existing properties are kept up to date.
|
|
15
15
|
* @returns Scraped OpenGraph properties as an object.
|
|
16
16
|
*/
|
|
17
|
-
export declare function parseOpenGraph(raw: string, additionalProperties?: OpenGraphProperty[]): Dictionary<OpenGraphResult
|
|
18
|
-
export declare function parseOpenGraph($: CheerioAPI, additionalProperties?: OpenGraphProperty[]): Dictionary<OpenGraphResult
|
|
17
|
+
export declare function parseOpenGraph(raw: string, additionalProperties?: OpenGraphProperty[]): Promise<Dictionary<OpenGraphResult>>;
|
|
18
|
+
export declare function parseOpenGraph($: CheerioAPI, additionalProperties?: OpenGraphProperty[]): Promise<Dictionary<OpenGraphResult>>;
|
|
19
19
|
export {};
|
|
20
20
|
//# sourceMappingURL=open_graph_parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open_graph_parser.d.ts","sourceRoot":"","sources":["../../src/internals/open_graph_parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"open_graph_parser.d.ts","sourceRoot":"","sources":["../../src/internals/open_graph_parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;AA2X3E;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAChC,GAAG,EAAE,MAAM,EACX,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AACxC,wBAAsB,cAAc,CAChC,CAAC,EAAE,UAAU,EACb,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,GAC3C,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { load } from 'cheerio';
|
|
2
1
|
/**
|
|
3
2
|
* To be used with the spread operator. Ensures that the item is defined, and is not empty.
|
|
4
3
|
*
|
|
@@ -366,7 +365,8 @@ const parseOpenGraphProperty = (property, $) => {
|
|
|
366
365
|
}, {}),
|
|
367
366
|
};
|
|
368
367
|
};
|
|
369
|
-
export function parseOpenGraph(item, additionalProperties) {
|
|
368
|
+
export async function parseOpenGraph(item, additionalProperties) {
|
|
369
|
+
const { load } = await import('cheerio');
|
|
370
370
|
const $ = typeof item === 'string' ? load(item) : item;
|
|
371
371
|
return [...(additionalProperties || []), ...OPEN_GRAPH_PROPERTIES].reduce((acc, curr) => {
|
|
372
372
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open_graph_parser.js","sourceRoot":"","sources":["../../src/internals/open_graph_parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open_graph_parser.js","sourceRoot":"","sources":["../../src/internals/open_graph_parser.ts"],"names":[],"mappings":"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"}
|
package/internals/robots.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BaseHttpClient, CrawleeLogger } from '@crawlee/types';
|
|
1
2
|
import { Sitemap } from './sitemap.js';
|
|
2
3
|
/**
|
|
3
4
|
* Loads and queries information from a [robots.txt file](https://en.wikipedia.org/wiki/Robots.txt).
|
|
@@ -20,13 +21,23 @@ import { Sitemap } from './sitemap.js';
|
|
|
20
21
|
export declare class RobotsTxtFile {
|
|
21
22
|
private robots;
|
|
22
23
|
private proxyUrl?;
|
|
24
|
+
private logger?;
|
|
23
25
|
private constructor();
|
|
24
26
|
/**
|
|
25
27
|
* Determine the location of a robots.txt file for a URL and fetch it.
|
|
26
28
|
* @param url the URL to fetch robots.txt for
|
|
27
|
-
* @param [
|
|
29
|
+
* @param [options] additional options
|
|
30
|
+
* @param [options.signal] an AbortSignal to cancel the request
|
|
31
|
+
* @param [options.timeoutMillis] timeout in milliseconds for the request
|
|
32
|
+
* @param [options.proxyUrl] a proxy to be used for fetching the robots.txt file
|
|
28
33
|
*/
|
|
29
|
-
static find(url: string,
|
|
34
|
+
static find(url: string, options?: {
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
timeoutMillis?: number;
|
|
37
|
+
proxyUrl?: string;
|
|
38
|
+
httpClient?: BaseHttpClient;
|
|
39
|
+
logger?: CrawleeLogger;
|
|
40
|
+
}): Promise<RobotsTxtFile>;
|
|
30
41
|
/**
|
|
31
42
|
* Allows providing the URL and robots.txt content explicitly instead of loading it from the target site.
|
|
32
43
|
* @param url the URL for robots.txt file
|
|
@@ -34,7 +45,13 @@ export declare class RobotsTxtFile {
|
|
|
34
45
|
* @param [proxyUrl] a proxy to be used for fetching the robots.txt file
|
|
35
46
|
*/
|
|
36
47
|
static from(url: string, content: string, proxyUrl?: string): RobotsTxtFile;
|
|
37
|
-
protected static load(url: string,
|
|
48
|
+
protected static load(url: string, options?: {
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
timeoutMillis?: number;
|
|
51
|
+
proxyUrl?: string;
|
|
52
|
+
httpClient?: BaseHttpClient;
|
|
53
|
+
logger?: CrawleeLogger;
|
|
54
|
+
}): Promise<RobotsTxtFile>;
|
|
38
55
|
/**
|
|
39
56
|
* Check if a URL should be crawled by robots.
|
|
40
57
|
* @param url the URL to check against the rules in robots.txt
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../src/internals/robots.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../src/internals/robots.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,MAAM,CAAC;IAHnB,OAAO;IAMP;;;;;;;OAOG;WACU,IAAI,CACb,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;KAC1B,GACF,OAAO,CAAC,aAAa,CAAC;IAQzB;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa;qBAKpD,IAAI,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;KAC1B,GACF,OAAO,CAAC,aAAa,CAAC;IAgCzB;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO;IAIhD;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGnD;AAGD,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,CAAC"}
|
package/internals/robots.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FetchHttpClient } from '@crawlee/http-client';
|
|
2
2
|
import robotsParser from 'robots-parser';
|
|
3
3
|
import { Sitemap } from './sitemap.js';
|
|
4
|
-
let HTTPError;
|
|
5
4
|
/**
|
|
6
5
|
* Loads and queries information from a [robots.txt file](https://en.wikipedia.org/wiki/Robots.txt).
|
|
7
6
|
*
|
|
@@ -23,20 +22,25 @@ let HTTPError;
|
|
|
23
22
|
export class RobotsTxtFile {
|
|
24
23
|
robots;
|
|
25
24
|
proxyUrl;
|
|
26
|
-
|
|
25
|
+
logger;
|
|
26
|
+
constructor(robots, proxyUrl, logger) {
|
|
27
27
|
this.robots = robots;
|
|
28
28
|
this.proxyUrl = proxyUrl;
|
|
29
|
+
this.logger = logger;
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
32
|
* Determine the location of a robots.txt file for a URL and fetch it.
|
|
32
33
|
* @param url the URL to fetch robots.txt for
|
|
33
|
-
* @param [
|
|
34
|
+
* @param [options] additional options
|
|
35
|
+
* @param [options.signal] an AbortSignal to cancel the request
|
|
36
|
+
* @param [options.timeoutMillis] timeout in milliseconds for the request
|
|
37
|
+
* @param [options.proxyUrl] a proxy to be used for fetching the robots.txt file
|
|
34
38
|
*/
|
|
35
|
-
static async find(url,
|
|
39
|
+
static async find(url, options) {
|
|
36
40
|
const robotsTxtFileUrl = new URL(url);
|
|
37
41
|
robotsTxtFileUrl.pathname = '/robots.txt';
|
|
38
42
|
robotsTxtFileUrl.search = '';
|
|
39
|
-
return RobotsTxtFile.load(robotsTxtFileUrl.toString(),
|
|
43
|
+
return RobotsTxtFile.load(robotsTxtFileUrl.toString(), options);
|
|
40
44
|
}
|
|
41
45
|
/**
|
|
42
46
|
* Allows providing the URL and robots.txt content explicitly instead of loading it from the target site.
|
|
@@ -48,33 +52,28 @@ export class RobotsTxtFile {
|
|
|
48
52
|
// @ts-ignore
|
|
49
53
|
return new RobotsTxtFile(robotsParser(url, content), proxyUrl);
|
|
50
54
|
}
|
|
51
|
-
static async load(url,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
responseType: 'text',
|
|
61
|
-
});
|
|
62
|
-
// @ts-ignore
|
|
63
|
-
return new RobotsTxtFile(robotsParser(url.toString(), response.body), proxyUrl);
|
|
55
|
+
static async load(url, options) {
|
|
56
|
+
const { proxyUrl, logger, httpClient = new FetchHttpClient() } = options || {};
|
|
57
|
+
const response = await httpClient.sendRequest(new Request(url, { method: 'GET' }), {
|
|
58
|
+
proxyUrl,
|
|
59
|
+
timeoutMillis: options?.timeoutMillis,
|
|
60
|
+
signal: options?.signal,
|
|
61
|
+
});
|
|
62
|
+
if (response.status < 200 || response.status >= 300) {
|
|
63
|
+
throw new Error(`Failed to load robots.txt from ${url}: HTTP ${response.status}`);
|
|
64
64
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}, proxyUrl);
|
|
75
|
-
}
|
|
76
|
-
throw e;
|
|
65
|
+
if (response.status === 404) {
|
|
66
|
+
return new RobotsTxtFile({
|
|
67
|
+
isAllowed() {
|
|
68
|
+
return true;
|
|
69
|
+
},
|
|
70
|
+
getSitemaps() {
|
|
71
|
+
return [];
|
|
72
|
+
},
|
|
73
|
+
}, proxyUrl, logger);
|
|
77
74
|
}
|
|
75
|
+
// @ts-ignore
|
|
76
|
+
return new RobotsTxtFile(robotsParser(url.toString(), await response.text()), proxyUrl, logger);
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
80
79
|
* Check if a URL should be crawled by robots.
|
|
@@ -94,7 +93,7 @@ export class RobotsTxtFile {
|
|
|
94
93
|
* Parse all the sitemaps referenced in the robots file.
|
|
95
94
|
*/
|
|
96
95
|
async parseSitemaps() {
|
|
97
|
-
return Sitemap.load(this.robots.getSitemaps(), this.proxyUrl);
|
|
96
|
+
return Sitemap.load(this.robots.getSitemaps(), this.proxyUrl, { logger: this.logger });
|
|
98
97
|
}
|
|
99
98
|
/**
|
|
100
99
|
* Get all URLs from all the sitemaps referenced in the robots file. A shorthand for `(await robots.parseSitemaps()).urls`.
|
package/internals/robots.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"robots.js","sourceRoot":"","sources":["../../src/internals/robots.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"robots.js","sourceRoot":"","sources":["../../src/internals/robots.ts"],"names":[],"mappings":"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"}
|
package/internals/sitemap.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Delays } from 'got-scraping';
|
|
1
|
+
import type { BaseHttpClient, CrawleeLogger } from '@crawlee/types';
|
|
3
2
|
interface SitemapUrlData {
|
|
4
3
|
loc: string;
|
|
5
4
|
lastmod?: Date;
|
|
@@ -36,9 +35,22 @@ export interface ParseSitemapOptions {
|
|
|
36
35
|
*/
|
|
37
36
|
sitemapRetries?: number;
|
|
38
37
|
/**
|
|
39
|
-
*
|
|
38
|
+
* Timeout settings for network requests when fetching sitemaps. By default this is `30000` milliseconds (30 seconds).
|
|
40
39
|
*/
|
|
41
|
-
|
|
40
|
+
timeoutMillis?: number;
|
|
41
|
+
/**
|
|
42
|
+
* If true, the parser will log a warning if it fails to fetch a sitemap due to a network error
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
reportNetworkErrors?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Custom HTTP client to be used for fetching sitemaps.
|
|
48
|
+
*/
|
|
49
|
+
httpClient?: BaseHttpClient;
|
|
50
|
+
/**
|
|
51
|
+
* Optional logger for reporting warnings during sitemap parsing.
|
|
52
|
+
*/
|
|
53
|
+
logger?: CrawleeLogger;
|
|
42
54
|
}
|
|
43
55
|
export declare function parseSitemap<T extends ParseSitemapOptions>(initialSources: SitemapSource[], proxyUrl?: string, options?: T): AsyncIterable<T['emitNestedSitemaps'] extends true ? SitemapUrl | NestedSitemap : SitemapUrl>;
|
|
44
56
|
/**
|
|
@@ -62,7 +74,7 @@ export declare class Sitemap {
|
|
|
62
74
|
* @param url The domain URL to fetch the sitemap for.
|
|
63
75
|
* @param proxyUrl A proxy to be used for fetching the sitemap file.
|
|
64
76
|
*/
|
|
65
|
-
static tryCommonNames(url: string, proxyUrl?: string): Promise<Sitemap>;
|
|
77
|
+
static tryCommonNames(url: string, proxyUrl?: string, parseSitemapOptions?: ParseSitemapOptions): Promise<Sitemap>;
|
|
66
78
|
/**
|
|
67
79
|
* Fetch sitemap content from given URL or URLs and return URLs of referenced pages.
|
|
68
80
|
* @param urls sitemap URL(s)
|
|
@@ -74,8 +86,47 @@ export declare class Sitemap {
|
|
|
74
86
|
* @param content XML sitemap content
|
|
75
87
|
* @param proxyUrl URL of a proxy to be used for fetching sitemap contents
|
|
76
88
|
*/
|
|
77
|
-
static fromXmlString(content: string, proxyUrl?: string): Promise<Sitemap>;
|
|
89
|
+
static fromXmlString(content: string, proxyUrl?: string, parseSitemapOptions?: ParseSitemapOptions): Promise<Sitemap>;
|
|
78
90
|
protected static parse(sources: SitemapSource[], proxyUrl?: string, parseSitemapOptions?: ParseSitemapOptions): Promise<Sitemap>;
|
|
79
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Given a list of URLs, discover related sitemap files for these domains by checking the `robots.txt` file,
|
|
94
|
+
* the default `sitemap.xml` & `sitemap.txt` files and the URLs themselves.
|
|
95
|
+
* @param `urls` The list of URLs to discover sitemaps for.
|
|
96
|
+
* @param `options` Options for sitemap discovery
|
|
97
|
+
* @returns An async iterable with the discovered sitemap URLs.
|
|
98
|
+
*/
|
|
99
|
+
export declare function discoverValidSitemaps(urls: string[], options?: {
|
|
100
|
+
/**
|
|
101
|
+
* Proxy URL to be used for network requests.
|
|
102
|
+
*/
|
|
103
|
+
proxyUrl?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Timeout in milliseconds for the entire `discoverValidSitemaps` call.
|
|
106
|
+
* An `AbortController` is created internally and its signal is passed to every HTTP request,
|
|
107
|
+
* so the whole discovery operation is cancelled once the timeout elapses.
|
|
108
|
+
* Defaults to `60_000` ms (60 seconds) to prevent indefinite hangs.
|
|
109
|
+
*/
|
|
110
|
+
timeoutMillis?: number;
|
|
111
|
+
/**
|
|
112
|
+
* An external `AbortSignal` to cancel the entire discovery operation.
|
|
113
|
+
* If both `signal` and `timeout` are provided, the operation is cancelled
|
|
114
|
+
* when either the signal is aborted or the timeout elapses (whichever comes first).
|
|
115
|
+
*/
|
|
116
|
+
signal?: AbortSignal;
|
|
117
|
+
/**
|
|
118
|
+
* Timeout in milliseconds for each individual HTTP request during discovery.
|
|
119
|
+
* Defaults to `20000` ms (20 seconds).
|
|
120
|
+
*/
|
|
121
|
+
requestTimeoutMillis?: number;
|
|
122
|
+
/**
|
|
123
|
+
* HTTP client to be used for network requests.
|
|
124
|
+
*/
|
|
125
|
+
httpClient?: BaseHttpClient;
|
|
126
|
+
/**
|
|
127
|
+
* Optional logger for reporting warnings during sitemap discovery.
|
|
128
|
+
*/
|
|
129
|
+
logger?: CrawleeLogger;
|
|
130
|
+
}): AsyncIterable<string>;
|
|
80
131
|
export {};
|
|
81
132
|
//# sourceMappingURL=sitemap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../src/internals/sitemap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../src/internals/sitemap.ts"],"names":[],"mappings":"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"}
|