docs: updating pages with the new feature
This commit is contained in:
@@ -19,7 +19,7 @@ Here's what happens step by step when you run a spider without many details:
|
||||
|
||||
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).
|
||||
3. The **Crawler Engine** asks the **Scheduler** to dequeue the next request, respecting concurrency limits (global and per-domain) and download delays. If `robots_txt_obey` is enabled, the engine checks the domain's robots.txt rules before proceeding -- disallowed requests are dropped silently. 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.
|
||||
6. The cycle repeats from step 2 until the scheduler is empty and no tasks are active, or the spider is paused.
|
||||
@@ -91,6 +91,7 @@ If you're coming from Scrapy, here's how Scrapling's spider system maps:
|
||||
| Blocked detection | Through custom middlewares | Built-in `is_blocked()` + `retry_blocked_request()` hooks |
|
||||
| Concurrency | `CONCURRENT_REQUESTS` setting | `concurrent_requests` class attribute |
|
||||
| Domain filtering | `allowed_domains` | `allowed_domains` |
|
||||
| Robots.txt | `ROBOTSTXT_OBEY` setting | `robots_txt_obey` class attribute |
|
||||
| Pause/Resume | `JOBDIR` setting | `crawldir` constructor argument |
|
||||
| Export | Feed exports | `result.items.to_json()` / `to_jsonl()` or custom through hooks |
|
||||
| Running | `scrapy crawl spider_name` | `MySpider().start()` |
|
||||
|
||||
Reference in New Issue
Block a user