also looking at this
fix: support structured DOM selectors
#847
6 files
+225
-57
| @@ -347,7 +347,16 @@ export class ExtractionPipeline<TIn = any, TOut = any> { | ||
| 347 | 347 | /** |
| 348 | 348 | * Built-in extractors for common patterns |
| 349 | 349 | */ |
| 350 | export const extractors = { | |
| 350 | export interface Extractors { | |
| 351 | text: (selector: string) => PipelineStep<Document, string[]> | |
| 352 | attr: (selector: string, attribute: string) => PipelineStep<Document, string[]> | |
| 353 | links: (selector?: string) => PipelineStep<Document, string[]> | |
| 354 | images: (selector?: string) => PipelineStep<Document, Array<{ src: string | null, alt: string | null, title: string | null }>> | |
| 355 | structured: (selector: string, schema: Record<string, string>) => PipelineStep<Document, Array<Record<string, any>>> | |
| 356 | jsonLd: () => PipelineStep<Document, any[]> | |
| 357 | } | |
| 358 | ||
| 359 | export const extractors: Extractors = { | |
| 351 | 360 | /** |
| 352 | 361 | * Extract text from elements |
| 353 | 362 | */ |