
🕷️ एक अनुकूलित वेब स्क्रैपिंग फ्रेमवर्क जो एकल अनुरोध से लेकर पूर्ण पैमाने पर क्रॉल तक सब कुछ संभालता है!
العربيه | Español | Português (Brasil) | Français | Deutsch | 简体中文 | 日本語 | Русский | 한국어
चयन विधियाँ · Fetchers · Spiders · प्रॉक्सी रोटेशन · CLI · MCP
Scrapling एक अनुकूली वेब स्क्रैपिंग फ्रेमवर्क है जो एकल अनुरोध से लेकर पूर्ण-स्तरीय क्रॉल तक सब कुछ संभालता है।
इसका पार्सर वेबसाइट परिवर्तनों से सीखता है और पृष्ठ अपडेट होने पर आपके तत्वों को स्वचालित रूप से पुनः स्थानांतरित करता है। इसके फेचर बिना किसी अतिरिक्त कॉन्फ़िगरेशन के Cloudflare Turnstile जैसी एंटी-बॉट प्रणालियों को बायपास कर देते हैं। और इसका स्पाइडर फ्रेमवर्क आपको पॉज़/रिज़्यूम और स्वचालित प्रॉक्सी रोटेशन के साथ समवर्ती, मल्टी-सेशन क्रॉल तक स्केल करने की सुविधा देता है - यह सब Python की कुछ पंक्तियों में। एक लाइब्रेरी, शून्य समझौते।
रीयल-टाइम आँकड़ों और स्ट्रीमिंग के साथ बेहद तेज़ क्रॉल। वेब स्क्रेपर्स द्वारा वेब स्क्रेपर्स और सामान्य उपयोगकर्ताओं के लिए निर्मित, इसमें सभी के लिए कुछ न कुछ है।```python
from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher
StealthyFetcher.adaptive = True
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!
या पूर्ण क्रॉल तक स्केल करें```python
from scrapling.spiders import Spider, Response
class MySpider(Spider):
name = "demo"
start_urls = ["https://example.com/"]
async def parse(self, response: Response):
for item in response.css('.product'):
yield {"title": item.css('h2::text').get()}
MySpider().start()
क्या आप यहाँ अपना विज्ञापन दिखाना चाहते हैं? यहाँ क्लिक करें
क्या आप यहाँ अपना विज्ञापन दिखाना चाहते हैं? यहाँ क्लिक करें और वह टियर चुनें जो आपके लिए उपयुक्त हो!
start_urls, async parse कॉलबैक और Request/Response ऑब्जेक्ट के साथ स्पाइडर परिभाषित करें।async for item in spider.stream() के माध्यम से वास्तविक समय आँकड़ों के साथ स्क्रैप किए गए आइटम आते ही स्ट्रीम करें - UI, पाइपलाइन और लंबे समय तक चलने वाले क्रॉल के लिए आदर्श।Retry-After कहता है उसकी प्रतीक्षा करता है), और रुकते ही गति वापस बढ़ा देता है।robots_txt_obey फ़्लैग जो प्रति-डोमेन कैशिंग के साथ Disallow, और निर्देशों का सम्मान करता है।Fetcher क्लास के साथ तेज़ और स्टील्थी HTTP अनुरोध। ब्राउज़रों के TLS फ़िंगरप्रिंट, हेडर की नकल कर सकता है और HTTP/3 का उपयोग कर सकता है।DynamicFetcher क्लास के माध्यम से पूर्ण ब्राउज़र ऑटोमेशन के साथ डायनेमिक वेबसाइट फ़ेच करें।StealthyFetcher और फ़िंगरप्रिंट स्पूफिंग के साथ उन्नत स्टील्थ क्षमताएँ। ऑटोमेशन के साथ Cloudflare के सभी प्रकार के Turnstile/Interstitial को आसानी से बायपास कर सकता है।FetcherSession, StealthySession और DynamicSession क्लासेस के साथ स्थायी सत्र समर्थन।ProxyRotator, साथ ही प्रति-अनुरोध प्रॉक्सी ओवरराइड।cdp_url के साथ CDP के माध्यम से पहले से चल रहे ब्राउज़र से कनेक्ट करें, चाहे वह उसी मशीन पर हो, किसी अन्य होस्ट पर, या प्रबंधित ब्राउज़र प्रदाता पर। आप के साथ किसी भी ब्राउज़र फ़ेचर को अपने स्वयं के Chromium बिल्ड पर भी इंगित कर सकते हैं।scrapling_response से डेकोरेट करें, किसी पुनर्लेखन की आवश्यकता नहीं है।आइए गहराई में जाए बिना आपको एक त्वरित झलक दें कि Scrapling क्या कर सकता है।
सत्र समर्थन के साथ HTTP अनुरोध```python from scrapling.fetchers import Fetcher, FetcherSession
with FetcherSession(impersonate='chrome') as session: # Use latest version of Chrome's TLS fingerprint page = session.get('https://quotes.toscrape.com/', stealthy_headers=True) quotes = page.css('.quote .text::text').getall()
page = Fetcher.get('https://quotes.toscrape.com/') quotes = page.css('.quote .text::text').getall()
उन्नत स्टील्थ मोड```python
from scrapling.fetchers import StealthyFetcher, StealthySession
with StealthySession(headless=True, solve_cloudflare=True) as session: # Keep the browser open until you finish
page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
data = page.css('#padded_content a').getall()
# Or use one-off request style, it opens the browser for this request, then closes it after finishing
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare')
data = page.css('#padded_content a').getall()
पूर्ण ब्राउज़र स्वचालन```python from scrapling.fetchers import DynamicFetcher, DynamicSession
with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session: # Keep the browser open until you finish page = session.fetch('https://quotes.toscrape.com/', load_dom=False) data = page.xpath('//span[@class="text"]/text()').getall() # XPath selector if you prefer it
page = DynamicFetcher.fetch('https://quotes.toscrape.com/') data = page.css('.quote .text::text').getall()
### स्पाइडर
समवर्ती अनुरोधों, कई सत्र प्रकारों, और रोक/फिर से शुरू करने की सुविधा के साथ पूर्ण क्रॉलर बनाएँ:```python
from scrapling.spiders import Spider, Request, Response
class QuotesSpider(Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com/"]
concurrent_requests = 10
async def parse(self, response: Response):
for quote in response.css('.quote'):
yield {
"text": quote.css('.text::text').get(),
"author": quote.css('.author::text').get(),
}
next_page = response.css('.next a')
if next_page:
yield response.follow(next_page[0].attrib['href'])
result = QuotesSpider().start()
print(f"Scraped {len(result.items)} quotes")
result.items.to_json("quotes.json")
एक ही स्पाइडर में कई सत्र प्रकारों का उपयोग करें:```python from scrapling.spiders import Spider, Request, Response from scrapling.fetchers import FetcherSession, AsyncStealthySession
class MultiSessionSpider(Spider): name = "multi" start_urls = ["https://example.com/"]
def configure_sessions(self, manager):
manager.add("fast", FetcherSession(impersonate="chrome"))
manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)
async def parse(self, response: Response):
for link in response.css('a::attr(href)').getall():
# Route protected pages through the stealth session
if "protected" in link:
yield Request(link, sid="stealth")
else:
yield Request(link, sid="fast", callback=self.parse) # explicit callback
इस तरह स्पाइडर चलाकर चेकपॉइंट्स के साथ लंबी क्रॉल्स को रोकें और फिर से शुरू करें:```python
QuotesSpider(crawldir="./crawl_data").start()
Press Ctrl+C to pause gracefully - progress is saved automatically. बाद में, जब आप स्पाइडर को फिर से शुरू करें, तो वही crawldir पास करें, और यह जहाँ से रुका था वहीं से फिर से शुरू होगा।
या तैयार टेम्पलेट्स के साथ क्रॉलिंग लॉजिक लिखने को पूरी तरह से छोड़ दें, जैसे किसी पूरे Shopify स्टोर का कैटलॉग खींचना:```python from scrapling.spiders import ShopifySpider
class MyStore(ShopifySpider): target_website = "example.com"
result = MyStore().start() # Every product in the store, one item per variant
### उन्नत पार्सिंग और नेविगेशन```python
from scrapling.fetchers import Fetcher
# Rich element selection and navigation
page = Fetcher.get('https://quotes.toscrape.com/')
# Get quotes with multiple selection methods
quotes = page.css('.quote') # CSS selector
quotes = page.xpath('//div[@class="quote"]') # XPath
quotes = page.find_all('div', {'class': 'quote'}) # BeautifulSoup-style
# Same as
quotes = page.find_all('div', class_='quote')
quotes = page.find_all(['div'], class_='quote')
quotes = page.find_all(class_='quote') # and so on...
# Find element by text content
quotes = page.find_by_text('quote', tag='div')
# Advanced navigation
quote_text = page.css('.quote')[0].css('.text::text').get()
quote_text = page.css('.quote').css('.text::text').getall() # Chained selectors
first_quote = page.css('.quote')[0]
author = first_quote.next_sibling.css('.author::text')
parent_container = first_quote.parent
# Element relationships and similarity
similar_elements = first_quote.find_similar()
below_elements = first_quote.below_elements()
यदि आप वेबसाइटों को फ़ेच नहीं करना चाहते हैं, तो आप पार्सर का उपयोग तुरंत कर सकते हैं, जैसा नीचे दिखाया गया है:```python from scrapling.parser import Selector
page = Selector("...")
और यह बिल्कुल उसी तरह काम करता है!
### एसिंक सत्र प्रबंधन उदाहरण```python
import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession, AsyncDynamicSession
async with FetcherSession(http3=True) as session: # `FetcherSession` is context-aware and can work in both sync/async patterns
page1 = session.get('https://quotes.toscrape.com/')
page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')
# Async session usage
async with AsyncStealthySession(max_pages=2) as session:
tasks = []
urls = ['https://example.com/page1', 'https://example.com/page2']
for url in urls:
task = session.fetch(url)
tasks.append(task)
print(session.get_pool_stats()) # Optional - The status of the browser tabs pool (busy/free/error)
results = await asyncio.gather(*tasks)
print(session.get_pool_stats())
Scrapling में एक शक्तिशाली कमांड-लाइन इंटरफ़ेस शामिल है:
इंटरैक्टिव वेब स्क्रैपिंग शेल लॉन्च करें```bash scrapling shell
पृष्ठों को बिना प्रोग्रामिंग के सीधे फ़ाइल में निकालें (डिफ़ॉल्ट रूप से `body` टैग के अंदर की सामग्री निकालता है)। यदि आउटपुट फ़ाइल `.txt` के साथ समाप्त होती है, तो लक्ष्य की टेक्स्ट सामग्री निकाली जाएगी। यदि यह `.md` में समाप्त होती है, तो यह HTML सामग्री का Markdown प्रतिनिधित्व होगा; यदि यह `.html` में समाप्त होती है, तो यह HTML सामग्री ही होगी।```bash
scrapling extract get 'https://example.com' content.md
scrapling extract get 'https://example.com' content.txt --css-selector '#fromSkipToProducts' --impersonate 'chrome' # All elements matching the CSS selector '#fromSkipToProducts'
scrapling extract fetch 'https://example.com' content.md --css-selector '#fromSkipToProducts' --no-headless
scrapling extract stealthy-fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare
[!NOTE] कई अतिरिक्त सुविधाएँ हैं, लेकिन हम इस पृष्ठ को संक्षिप्त रखना चाहते हैं, जिसमें MCP सर्वर और इंटरैक्टिव वेब स्क्रैपिंग शेल शामिल हैं। पूर्ण दस्तावेज़ यहाँ देखें।
Scrapling न केवल शक्तिशाली है - यह अत्यंत तेज़ भी है। निम्नलिखित बेंचमार्क Scrapling के पार्सर की तुलना अन्य लोकप्रिय लाइब्रेरीज़ के नवीनतम संस्करणों से करते हैं।
Scrapling की अनुकूली तत्व खोज क्षमताएँ विकल्पों से काफी बेहतर प्रदर्शन करती हैं:
| Library | Time (ms) | vs Scrapling |
|---|---|---|
| Scrapling | 2.3 | 1.0x |
| AutoScraper | 12.58 | 5.47x |
सभी बेंचमार्क 100+ रनों के औसत हैं। कार्यप्रणाली के लिए benchmarks.py देखें।
Scrapling को Python 3.10 या उससे अधिक की आवश्यकता है:```bash pip install scrapling
> [!IMPORTANT]
> यह इंस्टॉलेशन केवल पार्सर इंजन और इसकी निर्भरताओं को शामिल करता है, बिना किसी फेचर या कमांडलाइन निर्भरता के। इसलिए `scrapling.fetchers` या `scrapling.spiders` से कुछ भी इम्पोर्ट करना, जैसा कि ऊपर के उदाहरणों में है, इस इंस्टॉलेशन के साथ `ModuleNotFoundError` उत्पन्न करेगा। यदि आप किसी भी फेचर या स्पाइडर का उपयोग करने जा रहे हैं, तो पहले फेचर की निर्भरताओं को नीचे दिखाए अनुसार इंस्टॉल करें।
### वैकल्पिक निर्भरताएँ
1. यदि आप नीचे दी गई कोई भी अतिरिक्त सुविधा, फेचर या उनके क्लास का उपयोग करने जा रहे हैं, तो आपको फेचर की निर्भरताएँ और उनकी ब्राउज़र निर्भरताएँ निम्नानुसार इंस्टॉल करनी होंगी:
```bash
pip install "scrapling[fetchers]"
scrapling install # normal install
scrapling install --force # force reinstall
```
यह सभी ब्राउज़रों को, उनके सिस्टम निर्भरताओं और फिंगरप्रिंट हेरफेर निर्भरताओं के साथ डाउनलोड करता है।
या आप कमांड चलाने के बजाय उन्हें कोड से इस प्रकार इंस्टॉल कर सकते हैं:
```python
from scrapling.cli import install
install([], standalone_mode=False) # normal install
install(["--force"], standalone_mode=False) # force reinstall
```
2. अतिरिक्त सुविधाएँ:
- MCP सर्वर सुविधा इंस्टॉल करें:
```bash
pip install "scrapling[ai]"
```
- शेल सुविधाएँ इंस्टॉल करें (वेब स्क्रैपिंग शेल और `extract` कमांड):
```bash
pip install "scrapling[shell]"
```
- सब कुछ इंस्टॉल करें:
```bash
pip install "scrapling[all]"
```
याद रखें कि इनमें से किसी भी अतिरिक्त सुविधा के बाद आपको `scrapling install` के साथ ब्राउज़र निर्भरताएँ इंस्टॉल करनी होंगी (यदि आपने पहले नहीं की हैं)
### Docker
आप DockerHub से निम्न कमांड के साथ सभी अतिरिक्त सुविधाओं और ब्राउज़रों सहित एक Docker इमेज भी इंस्टॉल कर सकते हैं:```bash
docker pull pyd4vinci/scrapling
या इसे GitHub रजिस्ट्री से डाउनलोड करें:```bash docker pull ghcr.io/d4vinci/scrapling:latest
यह इमेज GitHub Actions और रिपॉजिटरी की मुख्य शाखा का उपयोग करके स्वचालित रूप से बनाई और पुश की जाती है।
## योगदान
हम योगदान का स्वागत करते हैं! शुरू करने से पहले कृपया हमारे [योगदान दिशानिर्देश](https://github.com/D4Vinci/Scrapling/blob/main/CONTRIBUTING.md) पढ़ें।
## अस्वीकरण
> [!CAUTION]
> यह लाइब्रेरी केवल शैक्षिक और शोध उद्देश्यों के लिए प्रदान की गई है। इस लाइब्रेरी का उपयोग करके, आप स्थानीय और अंतर्राष्ट्रीय डेटा स्क्रैपिंग और गोपनीयता कानूनों का पालन करने के लिए सहमत होते हैं। लेखक और योगदानकर्ता इस सॉफ़्टवेयर के किसी भी दुरुपयोग के लिए ज़िम्मेदार नहीं हैं। हमेशा वेबसाइटों की सेवा शर्तों और robots.txt फ़ाइलों का सम्मान करें।
## 🎓 उद्धरण
यदि आपने शोध उद्देश्यों के लिए हमारी लाइब्रेरी का उपयोग किया है, तो कृपया निम्नलिखित संदर्भ के साथ हमें उद्धृत करें:```text
@misc{scrapling,
author = {Karim Shoair},
title = {Scrapling},
year = {2024},
url = {https://github.com/D4Vinci/Scrapling},
note = {An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!}
}
यह कार्य BSD-3-Clause लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
इस प्रोजेक्ट में निम्नलिखित से अनुकूलित कोड शामिल है:
| NodeMaven - बाज़ार में सर्वोच्च गुणवत्ता वाले IP वाला विश्वसनीय प्रॉक्सी प्रदाता। प्रॉक्सी पर 35% छूट के लिए प्रोमो कोड SCRAPLING35 का उपयोग करें। |
| Proxidize स्क्रैपिंग, ब्राउज़र ऑटोमेशन, SEO निगरानी, AI एजेंट और डेटा संग्रह के लिए मोबाइल और रेज़िडेंशियल प्रॉक्सी प्रदान करता है। 20% छूट के लिए कोड scrapling20 का उपयोग करें। |
| ColdProxy स्थिर वेब स्क्रैपिंग, सार्वजनिक डेटा संग्रह और 195+ देशों में भू-लक्षित परीक्षण के लिए रेज़िडेंशियल और डेटासेंटर प्रॉक्सी प्रदान करता है। |
| Scrapling Cloudflare Turnstile को संभालता है। एंटरप्राइज़-ग्रेड सुरक्षा के लिए, Hyper Solutions API एंडपॉइंट प्रदान करता है जो Akamai, DataDome, Kasada और Incapsula के लिए मान्य एंटीबॉट टोकन उत्पन्न करते हैं। सरल API कॉल, किसी ब्राउज़र ऑटोमेशन की आवश्यकता नहीं। |
| अरे, हमने
BirdProxies
इसलिए बनाया क्योंकि प्रॉक्सी जटिल या अधिक कीमत वाले नहीं होने चाहिए। 195+ स्थानों पर तेज़ रेज़िडेंशियल और ISP प्रॉक्सी, उचित मूल्य और वास्तविक सहायता। मुफ्त डेटा के लिए लैंडिंग पेज पर हमारा FlappyBird गेम आज़माएँ! |
|
Evomi
: $0.49/GB से रेज़िडेंशियल प्रॉक्सी। पूरी तरह स्पूफ़ किए गए Chromium, रेज़िडेंशियल IP, स्वचालित CAPTCHA समाधान और एंटी-बॉट बायपास के साथ स्क्रैपिंग ब्राउज़र। आसान परिणामों के लिए Scraper API। MCP और N8N एकीकरण उपलब्ध हैं। |
|
TikHub.io TikTok, X, YouTube और Instagram सहित 16+ प्लेटफ़ॉर्म पर 900+ स्थिर API प्रदान करता है, साथ ही 40M+ डेटासेट भी। साथ ही छूट वाले AI मॉडल प्रदान करता है - Claude, GPT, GEMINI और 71% तक छूट पर और अधिक। |
|
अपना लैपटॉप बंद करें। आपके स्क्रैपर चलते रहते हैं। PetroSky VPS - नॉनस्टॉप ऑटोमेशन के लिए बनाए गए क्लाउड सर्वर। पूर्ण नियंत्रण वाली Windows और Linux मशीनें। €6.99/माह से। |
| The Web Scraping Club (नवंबर 2025) पर Scrapling की पूरी समीक्षा पढ़ें - वेब स्क्रैपिंग को समर्पित #1 न्यूज़लेटर। |
| Swiftproxy 195+ देशों में 80M+ IP के साथ स्केलेबल रेज़िडेंशियल प्रॉक्सी प्रदान करता है, जो तेज़, विश्वसनीय कनेक्शन, स्वचालित रोटेशन और मजबूत एंटी-ब्लॉक प्रदर्शन देता है। निःशुल्क परीक्षण उपलब्ध है। |
| CoreClaw AI एजेंटों के लिए वेब डेटा API प्रदान करता है। Google Maps, LinkedIn, Instagram, YouTube, Amazon और अधिक से संरचित डेटा तक पहुँचें। |
Crawl-delayRequest-rateparse() तर्क पर पुनरावृति करें।CrawlSpider, साइटमैप/robots.txt-आधारित क्रॉल के लिए SitemapSpider, XML/RSS और CSV फ़ीड पर पुनरावृति के लिए XMLFeedSpider/CSVFeedSpider, और किसी भी Shopify स्टोर से उसके JSON API के माध्यम से हर उत्पाद निकालने के लिए ShopifySpider के साथ बॉयलरप्लेट छोड़ें - प्रति वैरिएंट एक आइटम।LinkExtractor प्रिमिटिव - इसे टेम्पलेट के अंदर या अकेले उपयोग करें।result.items.to_json(), to_jsonl(), to_csv() और to_xml() के साथ अंतर्निहित JSON/JSONL/CSV/XML एक्सपोर्टर के माध्यम से परिणाम निर्यात करें।executable_pathcapture_xhr को एक URL पैटर्न दें, और पृष्ठ लोड होने के दौरान बनाए गए सभी मेल खाने वाले XHR/fetch प्रतिक्रियाएँ आपके लिए response.captured_xhr में Response ऑब्जेक्ट के रूप में एकत्र की जाती हैं - स्वयं अनुरोधों को रिवर्स-इंजीनियर किए बिना किसी साइट का API डेटा प्राप्त करें।| # | Library | Time (ms) | vs Scrapling |
|---|
| 1 | Scrapling | 1.99 | 1.0x |
| 2 | Parsel/Scrapy | 2.06 | 1.035 |
| 3 | Raw Lxml | 2.56 | 1.286 |
| 4 | PyQuery | 23.98 | ~12x |
| 5 | Selectolax | 197.02 | ~99x |
| 6 | MechanicalSoup | 1545.15 | ~776.5x |
| 7 | BS4 with Lxml | 1562.1 | ~785.0x |
| 8 | BS4 with html5lib | 3412.73 | ~1714.9x |