From a4f31ae20553c8bd53d0be5126d8c4b14a811390 Mon Sep 17 00:00:00 2001 From: yetval Date: Thu, 19 Mar 2026 10:37:02 -0400 Subject: [PATCH 1/2] simple md fix --- .../Scrapling-Skill/references/fetching/dynamic.md | 2 +- .../Scrapling-Skill/references/spiders/architecture.md | 10 +++++----- .../references/spiders/getting-started.md | 2 +- .../Scrapling-Skill/references/spiders/sessions.md | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/agent-skill/Scrapling-Skill/references/fetching/dynamic.md b/agent-skill/Scrapling-Skill/references/fetching/dynamic.md index a87fdf6..1a4c96d 100644 --- a/agent-skill/Scrapling-Skill/references/fetching/dynamic.md +++ b/agent-skill/Scrapling-Skill/references/fetching/dynamic.md @@ -44,7 +44,7 @@ Instead of launching a browser locally (Chromium/Google Chrome), you can connect **Notes:** * There was a `stealth` option here, but it was moved to the `StealthyFetcher` class, as explained on the next page, with additional features since version 0.3.13. -* This makes it less confusing for new users, easier to maintain, and provides other benefits, as explained on the [StealthyFetcher page](fetching/stealthy.md). +* This makes it less confusing for new users, easier to maintain, and provides other benefits, as explained on the [StealthyFetcher page](stealthy.md). ## Full list of arguments All arguments for `DynamicFetcher` and its session classes: diff --git a/agent-skill/Scrapling-Skill/references/spiders/architecture.md b/agent-skill/Scrapling-Skill/references/spiders/architecture.md index 9e7586f..de95d24 100644 --- a/agent-skill/Scrapling-Skill/references/spiders/architecture.md +++ b/agent-skill/Scrapling-Skill/references/spiders/architecture.md @@ -11,8 +11,8 @@ Here's what happens step by step when you run a spider: 1. The **Spider** produces the first batch of `Request` objects. By default, it creates one request for each URL in `start_urls`, but you can override `start_requests()` for custom logic. 2. The **Scheduler** receives requests and places them in a priority queue, and creates fingerprints for them. Higher-priority requests are dequeued first. 3. The **Crawler Engine** asks the **Scheduler** to dequeue the next request, respecting concurrency limits (global and per-domain) and download delays. Once the **Crawler Engine** receives the request, it passes it to the **Session Manager**, which routes it to the correct session based on the request's `sid` (session ID). -4. The **session** fetches the page and returns a [Response](fetching/choosing.md#response-object) object to the **Crawler Engine**. The engine records statistics and checks for blocked responses. If the response is blocked, the engine retries the request up to `max_blocked_retries` times. Of course, the blocking detection and the retry logic for blocked requests can be customized. -5. The **Crawler Engine** passes the [Response](fetching/choosing.md#response-object) to the request's callback. The callback either yields a dictionary, which gets treated as a scraped item, or a follow-up request, which gets sent to the scheduler for queuing. +4. The **session** fetches the page and returns a [Response](../fetching/choosing.md#response-object) object to the **Crawler Engine**. The engine records statistics and checks for blocked responses. If the response is blocked, the engine retries the request up to `max_blocked_retries` times. Of course, the blocking detection and the retry logic for blocked requests can be customized. +5. The **Crawler Engine** passes the [Response](../fetching/choosing.md#response-object) to the request's callback. The callback either yields a dictionary, which gets treated as a scraped item, or a follow-up request, which gets sent to the scheduler for queuing. 6. The cycle repeats from step 2 until the scheduler is empty and no tasks are active, or the spider is paused. 7. If `crawldir` is set while starting the spider, the **Crawler Engine** periodically saves a checkpoint (pending requests + seen URLs set) to disk. On graceful shutdown (Ctrl+C), a final checkpoint is saved. The next time the spider runs with the same `crawldir`, it resumes from where it left off — skipping `start_requests()` and restoring the scheduler state. @@ -50,9 +50,9 @@ A priority queue with built-in URL deduplication. Requests are fingerprinted bas Manages one or more named session instances. Each session is one of: -- [FetcherSession](fetching/static.md) -- [AsyncDynamicSession](fetching/dynamic.md) -- [AsyncStealthySession](fetching/stealthy.md) +- [FetcherSession](../fetching/static.md) +- [AsyncDynamicSession](../fetching/dynamic.md) +- [AsyncStealthySession](../fetching/stealthy.md) When a request comes in, the Session Manager routes it to the correct session based on the request's `sid` field. Sessions can be started with the spider start (default) or lazily (started on the first use). diff --git a/agent-skill/Scrapling-Skill/references/spiders/getting-started.md b/agent-skill/Scrapling-Skill/references/spiders/getting-started.md index 1446779..2a9e6c8 100644 --- a/agent-skill/Scrapling-Skill/references/spiders/getting-started.md +++ b/agent-skill/Scrapling-Skill/references/spiders/getting-started.md @@ -25,7 +25,7 @@ Every spider needs three things: 2. **`start_urls`** — A list of URLs to start crawling from. 3. **`parse()`** — An async generator method that processes each response and yields results. -The `parse()` method processes each response. You use the same selection methods you'd use with Scrapling's [Selector](parsing/main_classes.md#selector)/[Response](fetching/choosing.md#response-object), and `yield` dictionaries to output scraped items. +The `parse()` method processes each response. You use the same selection methods you'd use with Scrapling's [Selector](../parsing/main_classes.md#selector)/[Response](../fetching/choosing.md#response-object), and `yield` dictionaries to output scraped items. ## Running the Spider diff --git a/agent-skill/Scrapling-Skill/references/spiders/sessions.md b/agent-skill/Scrapling-Skill/references/spiders/sessions.md index 82a21ac..761cea6 100644 --- a/agent-skill/Scrapling-Skill/references/spiders/sessions.md +++ b/agent-skill/Scrapling-Skill/references/spiders/sessions.md @@ -6,14 +6,14 @@ A spider can use multiple fetcher sessions simultaneously — for example, a fas A session is a pre-configured fetcher instance that stays alive for the duration of the crawl. Instead of creating a new connection or browser for every request, the spider reuses sessions, which is faster and more resource-efficient. -By default, every spider creates a single [FetcherSession](fetching/static.md). You can add more sessions or swap the default by overriding the `configure_sessions()` method, but you have to use the async version of each session only, as the table shows below: +By default, every spider creates a single [FetcherSession](../fetching/static.md). You can add more sessions or swap the default by overriding the `configure_sessions()` method, but you have to use the async version of each session only, as the table shows below: | Session Type | Use Case | |-------------------------------------------------|------------------------------------------| -| [FetcherSession](fetching/static.md) | Fast HTTP requests, no JavaScript | -| [AsyncDynamicSession](fetching/dynamic.md) | Browser automation, JavaScript rendering | -| [AsyncStealthySession](fetching/stealthy.md) | Anti-bot bypass, Cloudflare, etc. | +| [FetcherSession](../fetching/static.md) | Fast HTTP requests, no JavaScript | +| [AsyncDynamicSession](../fetching/dynamic.md) | Browser automation, JavaScript rendering | +| [AsyncStealthySession](../fetching/stealthy.md) | Anti-bot bypass, Cloudflare, etc. | ## Configuring Sessions From 3ed59c2a849567c1780b94a45c62936f1797e6d4 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Thu, 19 Mar 2026 17:01:05 +0200 Subject: [PATCH 2/2] fix(agent): update skill zip file with the latest fix --- agent-skill/Scrapling-Skill.zip | Bin 81634 -> 81637 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/agent-skill/Scrapling-Skill.zip b/agent-skill/Scrapling-Skill.zip index 0bbd64c8f80cba8803b3228803d58b9b8e0bdb74..fb76762e2e6687e3033bbc9e56a5483d6a14ff92 100644 GIT binary patch delta 14311 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

} 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