From 1f5a7d5d2c448e3a223eb04ca9ffaf5b86a48755 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 02:31:28 +0200 Subject: [PATCH 01/12] ops: add mcp registry file --- README.md | 2 ++ server.json | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 server.json diff --git a/README.md b/README.md index 3c5e5ca..6fe8b37 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +

diff --git a/server.json b/server.json new file mode 100644 index 0000000..c88d9d1 --- /dev/null +++ b/server.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", + "name": "io.github.D4Vinci/Scrapling", + "title": "Scrapling MCP Server", + "description": "Web scraping with stealth HTTP, real browsers, and Cloudflare bypass. CSS selectors supported.", + "websiteUrl": "https://scrapling.readthedocs.io/en/latest/ai/mcp-server.html", + "repository": { + "url": "https://github.com/D4Vinci/Scrapling", + "source": "github" + }, + "icons": [ + { + "src": "https://raw.githubusercontent.com/D4Vinci/Scrapling/main/docs/assets/logo.png", + "mimeType": "image/png" + } + ], + "version": "0.4.0", + "packages": [ + { + "registryType": "pypi", + "identifier": "scrapling", + "version": "0.4.0", + "runtimeHint": "uvx", + "packageArguments": [ + { + "type": "positional", + "valueHint": "mcp", + "isFixed": true + } + ], + "transport": { + "type": "stdio" + } + }, + { + "registryType": "oci", + "identifier": "ghcr.io/d4vinci/scrapling", + "packageArguments": [ + { + "type": "positional", + "valueHint": "mcp", + "isFixed": true + } + ], + "transport": { + "type": "stdio" + } + } + ] +} \ No newline at end of file From 4072c5e83d91c9ebb5d441dda5ca5757645b243e Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 02:45:37 +0200 Subject: [PATCH 02/12] docs: update readme URLs --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6fe8b37..79a6a63 100644 --- a/README.md +++ b/README.md @@ -35,13 +35,15 @@

Selection methods · - Choosing a fetcher + Fetchers + · + Spiders + · + Proxy Rotation · CLI · - MCP mode - · - Migrating from Beautifulsoup + MCP

Scrapling is an adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl. From a6beaaba891d74f4c57cb9a3e55e50bfc8a625fe Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 02:58:25 +0200 Subject: [PATCH 03/12] docs: adjustments to sponsors placement --- README.md | 4 ++++ docs/README_AR.md | 6 ++++++ docs/README_CN.md | 6 ++++++ docs/README_DE.md | 6 ++++++ docs/README_ES.md | 6 ++++++ docs/README_JP.md | 6 ++++++ docs/README_RU.md | 6 ++++++ 7 files changed, 40 insertions(+) diff --git a/README.md b/README.md index 79a6a63..1e19415 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,8 @@ MySpider().start() ``` +# Platinum Sponsors + # Sponsors @@ -87,6 +89,8 @@ MySpider().start() + + diff --git a/docs/README_AR.md b/docs/README_AR.md index 4ac86da..2d7400d 100644 --- a/docs/README_AR.md +++ b/docs/README_AR.md @@ -1,3 +1,5 @@ + +

@@ -69,6 +71,8 @@ MySpider().start() ``` +# الرعاة البلاتينيون + # الرعاة @@ -81,6 +85,8 @@ MySpider().start() + + diff --git a/docs/README_CN.md b/docs/README_CN.md index b33c422..9147296 100644 --- a/docs/README_CN.md +++ b/docs/README_CN.md @@ -1,3 +1,5 @@ + +

@@ -69,6 +71,8 @@ MySpider().start() ``` +# 铂金赞助商 + # 赞助商 @@ -81,6 +85,8 @@ MySpider().start() + + diff --git a/docs/README_DE.md b/docs/README_DE.md index 7124483..6a1cb14 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -1,3 +1,5 @@ + +

@@ -69,6 +71,8 @@ MySpider().start() ``` +# Platin-Sponsoren + # Sponsoren @@ -81,6 +85,8 @@ MySpider().start() + + diff --git a/docs/README_ES.md b/docs/README_ES.md index 8957c41..328d40b 100644 --- a/docs/README_ES.md +++ b/docs/README_ES.md @@ -1,3 +1,5 @@ + +

@@ -69,6 +71,8 @@ MySpider().start() ``` +# Patrocinadores Platino + # Patrocinadores @@ -81,6 +85,8 @@ MySpider().start() + + diff --git a/docs/README_JP.md b/docs/README_JP.md index 3423f49..6cadb43 100644 --- a/docs/README_JP.md +++ b/docs/README_JP.md @@ -1,3 +1,5 @@ + +

@@ -69,6 +71,8 @@ MySpider().start() ``` +# プラチナスポンサー + # スポンサー @@ -81,6 +85,8 @@ MySpider().start() + + diff --git a/docs/README_RU.md b/docs/README_RU.md index dc59ba6..67b8a0a 100644 --- a/docs/README_RU.md +++ b/docs/README_RU.md @@ -1,3 +1,5 @@ + +

@@ -69,6 +71,8 @@ MySpider().start() ``` +# Платиновые спонсоры + # Спонсоры @@ -81,6 +85,8 @@ MySpider().start() + + From f5376139211f277d04a999b3a3d927a9a39e0a43 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 03:04:27 +0200 Subject: [PATCH 04/12] docs: shortening the demo code in the README --- README.md | 6 +++--- docs/README_AR.md | 6 +++--- docs/README_CN.md | 6 +++--- docs/README_DE.md | 6 +++--- docs/README_ES.md | 6 +++--- docs/README_JP.md | 6 +++--- docs/README_RU.md | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 1e19415..27474e4 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,9 @@ Blazing fast crawls with real-time stats and streaming. Built by Web Scrapers fo ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Fetch website under the radar! -products = page.css('.product', auto_save=True) # Scrape data that survives website design changes! -products = page.css('.product', adaptive=True) # Later, if the website structure changes, pass `adaptive=True` to find them! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Fetch website under the radar! +products = p.css('.product', auto_save=True) # Scrape data that survives website design changes! +products = p.css('.product', adaptive=True) # Later, if the website structure changes, pass `adaptive=True` to find them! ``` Or scale up to full crawls ```python diff --git a/docs/README_AR.md b/docs/README_AR.md index 2d7400d..0700110 100644 --- a/docs/README_AR.md +++ b/docs/README_AR.md @@ -51,9 +51,9 @@ Scrapling هو إطار عمل تكيفي لـ Web Scraping يتعامل مع ك ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # احصل على الموقع بشكل خفي! -products = page.css('.product', auto_save=True) # استخرج بيانات تنجو من تغييرات تصميم الموقع! -products = page.css('.product', adaptive=True) # لاحقاً، إذا تغيرت بنية الموقع، مرر `adaptive=True` للعثور عليها! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # احصل على الموقع بشكل خفي! +products = p.css('.product', auto_save=True) # استخرج بيانات تنجو من تغييرات تصميم الموقع! +products = p.css('.product', adaptive=True) # لاحقاً، إذا تغيرت بنية الموقع، مرر `adaptive=True` للعثور عليها! ``` أو توسع إلى عمليات زحف كاملة ```python diff --git a/docs/README_CN.md b/docs/README_CN.md index 9147296..a44e140 100644 --- a/docs/README_CN.md +++ b/docs/README_CN.md @@ -51,9 +51,9 @@ Scrapling是一个自适应Web Scraping框架,能处理从单个请求到大 ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # 隐秘地获取网站! -products = page.css('.product', auto_save=True) # 抓取在网站设计变更后仍能存活的数据! -products = page.css('.product', adaptive=True) # 之后,如果网站结构改变,传递 `adaptive=True` 来找到它们! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # 隐秘地获取网站! +products = p.css('.product', auto_save=True) # 抓取在网站设计变更后仍能存活的数据! +products = p.css('.product', adaptive=True) # 之后,如果网站结构改变,传递 `adaptive=True` 来找到它们! ``` 或扩展为完整爬取 ```python diff --git a/docs/README_DE.md b/docs/README_DE.md index 6a1cb14..8bef383 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -51,9 +51,9 @@ Blitzschnelle Crawls mit Echtzeit-Statistiken und Streaming. Von Web Scrapern f ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Website unbemerkt abrufen! -products = page.css('.product', auto_save=True) # Daten scrapen, die Website-Designänderungen überleben! -products = page.css('.product', adaptive=True) # Später, wenn sich die Website-Struktur ändert, `adaptive=True` übergeben, um sie zu finden! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Website unbemerkt abrufen! +products = p.css('.product', auto_save=True) # Daten scrapen, die Website-Designänderungen überleben! +products = p.css('.product', adaptive=True) # Später, wenn sich die Website-Struktur ändert, `adaptive=True` übergeben, um sie zu finden! ``` Oder auf vollständige Crawls hochskalieren ```python diff --git a/docs/README_ES.md b/docs/README_ES.md index 328d40b..cccdf7c 100644 --- a/docs/README_ES.md +++ b/docs/README_ES.md @@ -51,9 +51,9 @@ Rastreos ultrarrápidos con estadísticas en tiempo real y Streaming. Construido ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # ¡Obtén el sitio web bajo el radar! -products = page.css('.product', auto_save=True) # ¡Extrae datos que sobreviven a cambios de diseño del sitio web! -products = page.css('.product', adaptive=True) # Más tarde, si la estructura del sitio web cambia, ¡pasa `adaptive=True` para encontrarlos! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # ¡Obtén el sitio web bajo el radar! +products = p.css('.product', auto_save=True) # ¡Extrae datos que sobreviven a cambios de diseño del sitio web! +products = p.css('.product', adaptive=True) # Más tarde, si la estructura del sitio web cambia, ¡pasa `adaptive=True` para encontrarlos! ``` O escala a rastreos completos ```python diff --git a/docs/README_JP.md b/docs/README_JP.md index 6cadb43..d131289 100644 --- a/docs/README_JP.md +++ b/docs/README_JP.md @@ -51,9 +51,9 @@ Scraplingは、単一のリクエストから本格的なクロールまです ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # レーダーの下でウェブサイトを取得! -products = page.css('.product', auto_save=True) # ウェブサイトのデザイン変更に耐えるデータをスクレイプ! -products = page.css('.product', adaptive=True) # 後でウェブサイトの構造が変わったら、`adaptive=True`を渡して見つける! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # レーダーの下でウェブサイトを取得! +products = p.css('.product', auto_save=True) # ウェブサイトのデザイン変更に耐えるデータをスクレイプ! +products = p.css('.product', adaptive=True) # 後でウェブサイトの構造が変わったら、`adaptive=True`を渡して見つける! ``` または本格的なクロールへスケールアップ ```python diff --git a/docs/README_RU.md b/docs/README_RU.md index 67b8a0a..4f865e4 100644 --- a/docs/README_RU.md +++ b/docs/README_RU.md @@ -51,9 +51,9 @@ Scrapling — это адаптивный фреймворк для Web Scraping ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Загрузите сайт незаметно! -products = page.css('.product', auto_save=True) # Скрапьте данные, которые переживут изменения дизайна сайта! -products = page.css('.product', adaptive=True) # Позже, если структура сайта изменится, передайте `adaptive=True`, чтобы найти их! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Загрузите сайт незаметно! +products = p.css('.product', auto_save=True) # Скрапьте данные, которые переживут изменения дизайна сайта! +products = p.css('.product', adaptive=True) # Позже, если структура сайта изменится, передайте `adaptive=True`, чтобы найти их! ``` Или масштабируйте до полного обхода ```python From aed842c42eaa584d218a36c7c7b5cb60b4c2d8a0 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 03:25:18 +0200 Subject: [PATCH 05/12] docs: update sponsorship plans --- docs/donate.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/donate.md b/docs/donate.md index f5464a0..5143fc8 100644 --- a/docs/donate.md +++ b/docs/donate.md @@ -1,24 +1,29 @@ -I've been working on Scrapling and other public projects in my spare time and have invested considerable resources and effort to make them available to the community for free. By becoming a sponsor, you would directly fund my coffee reserves, helping me continuously update existing projects and create new ones. +I've been creating all of these projects in my spare time and have invested considerable resources & effort in providing them to the community for free. By becoming a sponsor, you'd be directly funding my coffee reserves, helping me fulfill my responsibilities, and enabling me to continuously update existing projects and potentially create new ones. You can sponsor me directly through the [GitHub Sponsors program](https://github.com/sponsors/D4Vinci) or [Buy Me a Coffee](https://buymeacoffee.com/d4vinci). Thank you, stay curious, and hack the planet! ❤️ ## Advertisement -If you are looking to **advertise** your business through Scrapling and take advantage of our target audience, check out the [available tiers](https://github.com/sponsors/D4Vinci): +If you are looking to **advertise** your business to our target audience, check out the [available tiers](https://github.com/sponsors/D4Vinci): -### [The Silver tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435496) ($50/month) +### 1. [The Silver tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435496) ($50/month) Perks: -- Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). -- The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/). -- The same logo will be featured at [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling). +1. Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). +2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. -### [The Gold tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435495) ($100/month) +### 2. [The Gold tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435495) ($100/month) Perks: -- Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). -- The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/). -- The same logo will be featured at [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling). -- Your logo will be featured as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. -- A Shoutout with each [Release note](https://github.com/D4Vinci/Scrapling/releases). +1. Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). +2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. +3. Your logo will be featured as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. + +### 3. [The Gold tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646) ($100/month) +Perks: + +1. Your logo will have a special placement at [the very top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors) with an 80-word paragraph or less. +2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. +3. Your logo will have a special placement as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. +4. A Shoutout at the end of each [Release notes](https://github.com/D4Vinci/Scrapling/releases). From a0cc3857d01ee3d88b6c2ac4c5c59013ed1d2045 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 03:27:43 +0200 Subject: [PATCH 06/12] docs: corrections to the sponsorship page --- docs/donate.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/donate.md b/docs/donate.md index 5143fc8..c8300f2 100644 --- a/docs/donate.md +++ b/docs/donate.md @@ -20,10 +20,10 @@ Perks: 2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. 3. Your logo will be featured as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. -### 3. [The Gold tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646) ($100/month) +### 3. [The Platinum tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646) ($300/month) Perks: -1. Your logo will have a special placement at [the very top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors) with an 80-word paragraph or less. +1. Your logo will have a special placement at [the very top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#platinum-sponsors) with an 80-word paragraph or less. 2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. 3. Your logo will have a special placement as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. 4. A Shoutout at the end of each [Release notes](https://github.com/D4Vinci/Scrapling/releases). From b503f537ce31b112d661899f18dc5e1ae79e1df2 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 23 Feb 2026 03:49:16 +0200 Subject: [PATCH 07/12] docs: corrections to the sponsorship page --- docs/donate.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/donate.md b/docs/donate.md index c8300f2..549a794 100644 --- a/docs/donate.md +++ b/docs/donate.md @@ -25,5 +25,6 @@ Perks: 1. Your logo will have a special placement at [the very top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#platinum-sponsors) with an 80-word paragraph or less. 2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. -3. Your logo will have a special placement as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. -4. A Shoutout at the end of each [Release notes](https://github.com/D4Vinci/Scrapling/releases). +3. Your logo will have a special placement as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. +4. A partner role at our Discord server. +5. A Shoutout at the end of each [Release notes](https://github.com/D4Vinci/Scrapling/releases). From c0aec234eb282faea512f565222e5fbd3edbb028 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Tue, 24 Feb 2026 15:19:23 +0200 Subject: [PATCH 08/12] docs: update sponsorship plans and corrections --- docs/donate.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/donate.md b/docs/donate.md index f5464a0..9c8349e 100644 --- a/docs/donate.md +++ b/docs/donate.md @@ -1,24 +1,30 @@ -I've been working on Scrapling and other public projects in my spare time and have invested considerable resources and effort to make them available to the community for free. By becoming a sponsor, you would directly fund my coffee reserves, helping me continuously update existing projects and create new ones. +I've been creating all of these projects in my spare time and have invested considerable resources & effort in providing them to the community for free. By becoming a sponsor, you'd be directly funding my coffee reserves, helping me fulfill my responsibilities, and enabling me to continuously update existing projects and potentially create new ones. You can sponsor me directly through the [GitHub Sponsors program](https://github.com/sponsors/D4Vinci) or [Buy Me a Coffee](https://buymeacoffee.com/d4vinci). Thank you, stay curious, and hack the planet! ❤️ ## Advertisement -If you are looking to **advertise** your business through Scrapling and take advantage of our target audience, check out the [available tiers](https://github.com/sponsors/D4Vinci): +If you are looking to **advertise** your business to our target audience, check out the [available tiers](https://github.com/sponsors/D4Vinci): -### [The Silver tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435496) ($50/month) +### 1. [The Silver tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435496) ($50/month) Perks: -- Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). -- The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/). -- The same logo will be featured at [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling). +1. Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). +2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. -### [The Gold tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435495) ($100/month) +### 2. [The Gold tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=435495) ($100/month) Perks: -- Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). -- The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/). -- The same logo will be featured at [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling). -- Your logo will be featured as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. -- A Shoutout with each [Release note](https://github.com/D4Vinci/Scrapling/releases). +1. Your logo will be featured at [the top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#sponsors). +2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. +3. Your logo will be featured as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. + +### 3. [The Platinum tier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646) ($300/month) +Perks: + +1. Your logo will have a special placement at [the very top of Scrapling's project page](https://github.com/D4Vinci/Scrapling?tab=readme-ov-file#platinum-sponsors) with an 80-word paragraph or less. +2. The same logo will be featured at [the top of Scrapling's PyPI page](https://pypi.org/project/scrapling/) and [the top of Docker's image page](https://hub.docker.com/r/pyd4vinci/scrapling), the same way it was placed on the project's page. +3. Your logo will have a special placement as a top sponsor on [Scrapling's website](https://scrapling.readthedocs.io/en/latest/) main page. +4. A partner role at our Discord server. +5. A Shoutout at the end of each [Release notes](https://github.com/D4Vinci/Scrapling/releases). \ No newline at end of file From 8c9402f9f09f0cd8896a85cca2688f111e17fdfd Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Tue, 24 Feb 2026 15:28:37 +0200 Subject: [PATCH 09/12] docs: adding new sponsor --- README.md | 22 +++++++++++++++------- docs/README_AR.md | 17 ++++++++++++----- docs/README_CN.md | 17 ++++++++++++----- docs/README_DE.md | 17 ++++++++++++----- docs/README_ES.md | 19 +++++++++++++------ docs/README_JP.md | 17 ++++++++++++----- docs/README_RU.md | 17 ++++++++++++----- docs/index.md | 1 + images/ProxyEmpire.png | Bin 0 -> 8765 bytes 9 files changed, 89 insertions(+), 38 deletions(-) create mode 100644 images/ProxyEmpire.png diff --git a/README.md b/README.md index 3c5e5ca..10df642 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +

@@ -33,13 +35,15 @@

Selection methods · - Choosing a fetcher + Fetchers + · + Spiders + · + Proxy Rotation · CLI · - MCP mode - · - Migrating from Beautifulsoup + MCP

Scrapling is an adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl. @@ -51,9 +55,9 @@ Blazing fast crawls with real-time stats and streaming. Built by Web Scrapers fo ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Fetch website under the radar! -products = page.css('.product', auto_save=True) # Scrape data that survives website design changes! -products = page.css('.product', adaptive=True) # Later, if the website structure changes, pass `adaptive=True` to find them! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Fetch website under the radar! +products = p.css('.product', auto_save=True) # Scrape data that survives website design changes! +products = p.css('.product', adaptive=True) # Later, if the website structure changes, pass `adaptive=True` to find them! ``` Or scale up to full crawls ```python @@ -70,6 +74,7 @@ class MySpider(Spider): MySpider().start() ``` +# Platinum Sponsors # Sponsors @@ -82,7 +87,10 @@ MySpider().start() + + + diff --git a/docs/README_AR.md b/docs/README_AR.md index 4ac86da..dcccfa0 100644 --- a/docs/README_AR.md +++ b/docs/README_AR.md @@ -33,11 +33,13 @@ · اختيار Fetcher · + العناكب + · + تدوير البروكسي + · واجهة سطر الأوامر · وضع MCP - · - الانتقال من Beautifulsoup

Scrapling هو إطار عمل تكيفي لـ Web Scraping يتعامل مع كل شيء من طلب واحد إلى زحف كامل النطاق. @@ -49,9 +51,9 @@ Scrapling هو إطار عمل تكيفي لـ Web Scraping يتعامل مع ك ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # احصل على الموقع بشكل خفي! -products = page.css('.product', auto_save=True) # استخرج بيانات تنجو من تغييرات تصميم الموقع! -products = page.css('.product', adaptive=True) # لاحقاً، إذا تغيرت بنية الموقع، مرر `adaptive=True` للعثور عليها! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # احصل على الموقع بشكل خفي! +products = p.css('.product', auto_save=True) # استخرج بيانات تنجو من تغييرات تصميم الموقع! +products = p.css('.product', adaptive=True) # لاحقاً، إذا تغيرت بنية الموقع، مرر `adaptive=True` للعثور عليها! ``` أو توسع إلى عمليات زحف كاملة ```python @@ -69,6 +71,8 @@ MySpider().start() ``` +# الرعاة البلاتينيون + # الرعاة @@ -80,7 +84,10 @@ MySpider().start() + + + diff --git a/docs/README_CN.md b/docs/README_CN.md index b33c422..d9ec033 100644 --- a/docs/README_CN.md +++ b/docs/README_CN.md @@ -33,11 +33,13 @@ · 选择Fetcher · + 爬虫 + · + 代理轮换 + · CLI · MCP模式 - · - 从Beautifulsoup迁移

Scrapling是一个自适应Web Scraping框架,能处理从单个请求到大规模爬取的一切需求。 @@ -49,9 +51,9 @@ Scrapling是一个自适应Web Scraping框架,能处理从单个请求到大 ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # 隐秘地获取网站! -products = page.css('.product', auto_save=True) # 抓取在网站设计变更后仍能存活的数据! -products = page.css('.product', adaptive=True) # 之后,如果网站结构改变,传递 `adaptive=True` 来找到它们! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # 隐秘地获取网站! +products = p.css('.product', auto_save=True) # 抓取在网站设计变更后仍能存活的数据! +products = p.css('.product', adaptive=True) # 之后,如果网站结构改变,传递 `adaptive=True` 来找到它们! ``` 或扩展为完整爬取 ```python @@ -69,6 +71,8 @@ MySpider().start() ``` +# 铂金赞助商 + # 赞助商 @@ -80,7 +84,10 @@ MySpider().start() + + + diff --git a/docs/README_DE.md b/docs/README_DE.md index 7124483..cec019c 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -33,11 +33,13 @@ · Einen Fetcher wählen · + Spiders + · + Proxy-Rotation + · CLI · MCP-Modus - · - Migration von Beautifulsoup

Scrapling ist ein adaptives Web-Scraping-Framework, das alles abdeckt -- von einer einzelnen Anfrage bis hin zu einem umfassenden Crawl. @@ -49,9 +51,9 @@ Blitzschnelle Crawls mit Echtzeit-Statistiken und Streaming. Von Web Scrapern f ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Website unbemerkt abrufen! -products = page.css('.product', auto_save=True) # Daten scrapen, die Website-Designänderungen überleben! -products = page.css('.product', adaptive=True) # Später, wenn sich die Website-Struktur ändert, `adaptive=True` übergeben, um sie zu finden! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Website unbemerkt abrufen! +products = p.css('.product', auto_save=True) # Daten scrapen, die Website-Designänderungen überleben! +products = p.css('.product', adaptive=True) # Später, wenn sich die Website-Struktur ändert, `adaptive=True` übergeben, um sie zu finden! ``` Oder auf vollständige Crawls hochskalieren ```python @@ -69,6 +71,8 @@ MySpider().start() ``` +# Platin-Sponsoren + # Sponsoren @@ -80,7 +84,10 @@ MySpider().start() + + + diff --git a/docs/README_ES.md b/docs/README_ES.md index 8957c41..851fa40 100644 --- a/docs/README_ES.md +++ b/docs/README_ES.md @@ -29,15 +29,17 @@

- Metodos de seleccion + Métodos de selección · Elegir un fetcher · + Spiders + · + Rotación de proxy + · CLI · Modo MCP - · - Migrar desde Beautifulsoup

Scrapling es un framework de Web Scraping adaptativo que se encarga de todo, desde una sola solicitud hasta un rastreo a gran escala. @@ -49,9 +51,9 @@ Rastreos ultrarrápidos con estadísticas en tiempo real y Streaming. Construido ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # ¡Obtén el sitio web bajo el radar! -products = page.css('.product', auto_save=True) # ¡Extrae datos que sobreviven a cambios de diseño del sitio web! -products = page.css('.product', adaptive=True) # Más tarde, si la estructura del sitio web cambia, ¡pasa `adaptive=True` para encontrarlos! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # ¡Obtén el sitio web bajo el radar! +products = p.css('.product', auto_save=True) # ¡Extrae datos que sobreviven a cambios de diseño del sitio web! +products = p.css('.product', adaptive=True) # Más tarde, si la estructura del sitio web cambia, ¡pasa `adaptive=True` para encontrarlos! ``` O escala a rastreos completos ```python @@ -69,6 +71,8 @@ MySpider().start() ``` +# Patrocinadores Platino + # Patrocinadores @@ -80,7 +84,10 @@ MySpider().start() + + + diff --git a/docs/README_JP.md b/docs/README_JP.md index 3423f49..43afc62 100644 --- a/docs/README_JP.md +++ b/docs/README_JP.md @@ -33,11 +33,13 @@ · Fetcherの選び方 · + スパイダー + · + プロキシローテーション + · CLI · MCPモード - · - Beautifulsoupからの移行

Scraplingは、単一のリクエストから本格的なクロールまですべてを処理する適応型Web Scrapingフレームワークです。 @@ -49,9 +51,9 @@ Scraplingは、単一のリクエストから本格的なクロールまです ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # レーダーの下でウェブサイトを取得! -products = page.css('.product', auto_save=True) # ウェブサイトのデザイン変更に耐えるデータをスクレイプ! -products = page.css('.product', adaptive=True) # 後でウェブサイトの構造が変わったら、`adaptive=True`を渡して見つける! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # レーダーの下でウェブサイトを取得! +products = p.css('.product', auto_save=True) # ウェブサイトのデザイン変更に耐えるデータをスクレイプ! +products = p.css('.product', adaptive=True) # 後でウェブサイトの構造が変わったら、`adaptive=True`を渡して見つける! ``` または本格的なクロールへスケールアップ ```python @@ -69,6 +71,8 @@ MySpider().start() ``` +# プラチナスポンサー + # スポンサー @@ -80,7 +84,10 @@ MySpider().start() + + + diff --git a/docs/README_RU.md b/docs/README_RU.md index dc59ba6..5a3151b 100644 --- a/docs/README_RU.md +++ b/docs/README_RU.md @@ -33,11 +33,13 @@ · Выбор Fetcher · + Пауки + · + Ротация прокси + · CLI · Режим MCP - · - Миграция с Beautifulsoup

Scrapling — это адаптивный фреймворк для Web Scraping, который берёт на себя всё: от одного запроса до полномасштабного обхода сайтов. @@ -49,9 +51,9 @@ Scrapling — это адаптивный фреймворк для Web Scraping ```python from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher StealthyFetcher.adaptive = True -page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Загрузите сайт незаметно! -products = page.css('.product', auto_save=True) # Скрапьте данные, которые переживут изменения дизайна сайта! -products = page.css('.product', adaptive=True) # Позже, если структура сайта изменится, передайте `adaptive=True`, чтобы найти их! +p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) # Загрузите сайт незаметно! +products = p.css('.product', auto_save=True) # Скрапьте данные, которые переживут изменения дизайна сайта! +products = p.css('.product', adaptive=True) # Позже, если структура сайта изменится, передайте `adaptive=True`, чтобы найти их! ``` Или масштабируйте до полного обхода ```python @@ -69,6 +71,8 @@ MySpider().start() ``` +# Платиновые спонсоры + # Спонсоры @@ -80,7 +84,10 @@ MySpider().start() + + + diff --git a/docs/index.md b/docs/index.md index 3e53e33..15f7b5d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -55,6 +55,7 @@ MySpider().start() + diff --git a/images/ProxyEmpire.png b/images/ProxyEmpire.png new file mode 100644 index 0000000000000000000000000000000000000000..d407789373896faf0b775550151130ea92f042ad GIT binary patch literal 8765 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 Date: Wed, 25 Feb 2026 02:06:09 +0200 Subject: [PATCH 10/12] docs: add the trending badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 10df642..aae6045 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@

+ D4Vinci%2FScrapling | Trendshift +
العربيه | Español | Deutsch | 简体中文 | 日本語 | Русский
From 6943ec27f84306290ba084542bfb2ddb59785856 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Wed, 25 Feb 2026 02:23:36 +0200 Subject: [PATCH 11/12] docs: typo correction --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 84a569a..aae6045 100644 --- a/README.md +++ b/README.md @@ -78,8 +78,6 @@ MySpider().start() # Platinum Sponsors -# Platinum Sponsors - # Sponsors From 7ebe3a01a33364f7287309e5b80fc0771462d326 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Wed, 25 Feb 2026 23:54:24 +0200 Subject: [PATCH 12/12] docs: removing an irrelevant article --- docs/tutorials/external.md | 34 ---------------------------------- zensical.toml | 3 +-- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 docs/tutorials/external.md diff --git a/docs/tutorials/external.md b/docs/tutorials/external.md deleted file mode 100644 index 15a5f9b..0000000 --- a/docs/tutorials/external.md +++ /dev/null @@ -1,34 +0,0 @@ - -If you have issues with the browser installation, such as resource management, we recommend you try the Cloud Browser from [Scrapeless](https://www.scrapeless.com/en/product/scraping-browser?utm_source=official&utm_term=scrapling) for free! - -The usage is straightforward: create an account and [get your API key](https://docs.scrapeless.com/en/scraping-browser/quickstart/getting-started/?utm_source=official&utm_term=scrapling), then pass it to the `DynamicSession` like this: - -```python -from urllib.parse import urlencode - -from scrapling.fetchers import DynamicSession - -# Configure your browser session -config = { - "token": "YOUR_API_KEY", - "sessionName": "scrapling-session", - "sessionTTL": "300", # 5 minutes - "proxyCountry": "ANY", - "sessionRecording": "false", -} - -# Build WebSocket URL -ws_endpoint = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(config)}" -print('Connecting to Scrapeless...') - -with DynamicSession(cdp_url=ws_endpoint, disable_resources=True) as s: - print("Connected!") - page = s.fetch("https://httpbin.org/headers", network_idle=True) - print(f"Page loaded, content length: {len(page.body)}") - print(page.json()) -``` -The `DynamicSession` class instance will work as usual, so no further explanation is needed. - -However, the Scrapeless Cloud Browser can be configured with proxy options, like the proxy country in the config above, [custom fingerprint](https://docs.scrapeless.com/en/scraping-browser/features/advanced-privacy-anti-detection/custom-fingerprint/?utm_source=official&utm_term=scrapling) configuration, [captcha solving](https://docs.scrapeless.com/en/scraping-browser/features/advanced-privacy-anti-detection/supported-captchas/?utm_source=official&utm_term=scrapling), and more. - -Check out the [Scrapeless's browser documentation](https://docs.scrapeless.com/en/scraping-browser/quickstart/introduction/?utm_source=official&utm_term=scrapling) for more details. \ No newline at end of file diff --git a/zensical.toml b/zensical.toml index 06b5575..0b52de7 100644 --- a/zensical.toml +++ b/zensical.toml @@ -50,8 +50,7 @@ nav = [ ]}, {Tutorials = [ {"A Free Alternative to AI for Robust Web Scraping" = "tutorials/replacing_ai.md"}, - {"Migrating from BeautifulSoup" = "tutorials/migrating_from_beautifulsoup.md"}, - {"Using Scrapeless browser" = "tutorials/external.md"} + {"Migrating from BeautifulSoup" = "tutorials/migrating_from_beautifulsoup.md"} ]}, {Development = [ {"API Reference" = [