
Scrapling v0.4.13
🕷️ एक अनुकूलित वेब स्क्रैपिंग फ्रेमवर्क जो एकल अनुरोध से लेकर पूर्ण पैमाने पर क्रॉल तक सब कुछ संभालता है!
आधुनिक वेब के लिए सहज वेब स्क्रैपिंग
العربيه | 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()
प्लैटिनम प्रायोजक
| 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 और अधिक से संरचित डेटा तक पहुँचें। |
क्या आप यहाँ अपना विज्ञापन दिखाना चाहते हैं? यहाँ क्लिक करें
प्रायोजक
क्या आप यहाँ अपना विज्ञापन दिखाना चाहते हैं? यहाँ क्लिक करें और वह टियर चुनें जो आपके लिए उपयुक्त हो!
मुख्य विशेषताएँ
Spiders - एक संपूर्ण क्रॉलिंग फ्रेमवर्क
- 🕷️ Scrapy-जैसी Spider API:
start_urls, asyncparseकॉलबैक औरRequest/Responseऑब्जेक्ट के साथ स्पाइडर परिभाषित करें। - ⚡ समवर्ती क्रॉलिंग: कॉन्फ़िगर करने योग्य समवर्ती सीमाएँ, प्रति-डोमेन थ्रॉटलिंग और डाउनलोड विलंब।
- 🔄 मल्टी-सेशन समर्थन: एक ही स्पाइडर में HTTP अनुरोधों और स्टील्थी हेडलेस ब्राउज़रों के लिए एकीकृत इंटरफ़ेस - अनुरोधों को ID द्वारा विभिन्न सत्रों में रूट करें।
- 💾 रोकें और फिर से शुरू करें: चेकपॉइंट-आधारित क्रॉल स्थायित्व। सुगम शटडाउन के लिए Ctrl+C दबाएँ; जहाँ से छोड़ा था वहीं से शुरू करने के लिए पुनः प्रारंभ करें।
- 📡 स्ट्रीमिंग मोड:
async for item in spider.stream()के माध्यम से वास्तविक समय आँकड़ों के साथ स्क्रैप किए गए आइटम आते ही स्ट्रीम करें - UI, पाइपलाइन और लंबे समय तक चलने वाले क्रॉल के लिए आदर्श। - 🛡️ अवरुद्ध अनुरोध पहचान: अनुकूलन योग्य तर्क के साथ अवरुद्ध अनुरोधों का स्वचालित पता लगाना और पुनः प्रयास।
- 🚦 AutoThrottle: विलंब का अनुमान लगाना बंद करें। स्पाइडर वेबसाइट की प्रतिक्रिया गति के आधार पर प्रत्येक डोमेन का विलंब स्वयं समायोजित करता है, फिर जब भी वेबसाइट आपको ब्लॉक या रेट-लिमिट करना शुरू करती है तो उसे दोगुना कर देता है (या जो
Retry-Afterकहता है उसकी प्रतीक्षा करता है), और रुकते ही गति वापस बढ़ा देता है। - 🤖 Robots.txt अनुपालन: वैकल्पिक
robots_txt_obeyफ़्लैग जो प्रति-डोमेन कैशिंग के साथDisallow,Crawl-delayऔरRequest-rateनिर्देशों का सम्मान करता है। - 🧪 डेवलपमेंट मोड: पहली बार चलाने पर प्रतिक्रियाओं को डिस्क पर कैश करें और बाद के रन में उन्हें पुनः चलाएँ - लक्ष्य सर्वरों को फिर से हिट किए बिना अपने
parse()तर्क पर पुनरावृति करें। - 🧩 तैयार Spider टेम्पलेट: नियम-आधारित लिंक अनुसरण के लिए
CrawlSpider, साइटमैप/robots.txt-आधारित क्रॉल के लिएSitemapSpider, XML/RSS और CSV फ़ीड पर पुनरावृति के लिएXMLFeedSpider/CSVFeedSpider, और किसी भी Shopify स्टोर से उसके JSON API के माध्यम से हर उत्पाद निकालने के लिएShopifySpiderके साथ बॉयलरप्लेट छोड़ें - प्रति वैरिएंट एक आइटम। - 🔗 लिंक निष्कर्षण: allow/deny पैटर्न, डोमेन फ़िल्टर, CSS/XPath स्कोपिंग, एक्सटेंशन फ़िल्टरिंग और कैनोनिकलाइज़ेशन के साथ एक स्टैंडअलोन
LinkExtractorप्रिमिटिव - इसे टेम्पलेट के अंदर या अकेले उपयोग करें। - 📦 अंतर्निहित निर्यात: हुक और अपनी खुद की पाइपलाइन या
result.items.to_json(),to_jsonl(),to_csv()औरto_xml()के साथ अंतर्निहित JSON/JSONL/CSV/XML एक्सपोर्टर के माध्यम से परिणाम निर्यात करें।
सत्र समर्थन के साथ उन्नत वेबसाइट फ़ेचिंग
- HTTP अनुरोध:
Fetcherक्लास के साथ तेज़ और स्टील्थी HTTP अनुरोध। ब्राउज़रों के TLS फ़िंगरप्रिंट, हेडर की नकल कर सकता है और HTTP/3 का उपयोग कर सकता है। - डायनेमिक लोडिंग: Playwright के Chromium और Google के Chrome का समर्थन करने वाली
DynamicFetcherक्लास के माध्यम से पूर्ण ब्राउज़र ऑटोमेशन के साथ डायनेमिक वेबसाइट फ़ेच करें। - एंटी-बॉट बायपास:
StealthyFetcherऔर फ़िंगरप्रिंट स्पूफिंग के साथ उन्नत स्टील्थ क्षमताएँ। ऑटोमेशन के साथ Cloudflare के सभी प्रकार के Turnstile/Interstitial को आसानी से बायपास कर सकता है। - सत्र प्रबंधन: अनुरोधों के दौरान कुकी और स्थिति प्रबंधन के लिए
FetcherSession,StealthySessionऔरDynamicSessionक्लासेस के साथ स्थायी सत्र समर्थन। - प्रॉक्सी रोटेशन: सभी सत्र प्रकारों में चक्रीय या कस्टम रोटेशन रणनीतियों के साथ अंतर्निहित
ProxyRotator, साथ ही प्रति-अनुरोध प्रॉक्सी ओवरराइड। - डोमेन और विज्ञापन अवरोधन: विशिष्ट डोमेन (और उनके सबडोमेन) के अनुरोधों को ब्लॉक करें या ब्राउज़र-आधारित फ़ेचर में अंतर्निहित विज्ञापन अवरोधन (~3,500 ज्ञात विज्ञापन/ट्रैकर डोमेन) सक्षम करें।
- DNS लीक रोकथाम: DNS क्वेरी को Cloudflare के DoH के माध्यम से रूट करने के लिए वैकल्पिक DNS-over-HTTPS समर्थन, प्रॉक्सी का उपयोग करते समय DNS लीक को रोकता है।
- रिमोट ब्राउज़र: ब्राउज़र को स्थानीय रूप से लॉन्च करने के बजाय,
cdp_urlके साथ CDP के माध्यम से पहले से चल रहे ब्राउज़र से कनेक्ट करें, चाहे वह उसी मशीन पर हो, किसी अन्य होस्ट पर, या प्रबंधित ब्राउज़र प्रदाता पर। आपexecutable_pathके साथ किसी भी ब्राउज़र फ़ेचर को अपने स्वयं के Chromium बिल्ड पर भी इंगित कर सकते हैं। - बैकग्राउंड API कैप्चर:
capture_xhrको एक URL पैटर्न दें, और पृष्ठ लोड होने के दौरान बनाए गए सभी मेल खाने वाले XHR/fetch प्रतिक्रियाएँ आपके लिएresponse.captured_xhrमेंResponseऑब्जेक्ट के रूप में एकत्र की जाती हैं - स्वयं अनुरोधों को रिवर्स-इंजीनियर किए बिना किसी साइट का API डेटा प्राप्त करें। - Async समर्थन: सभी फ़ेचर और समर्पित async सत्र क्लासेस में पूर्ण async समर्थन।
एडेप्टिव स्क्रैपिंग और AI एकीकरण
- 🔄 स्मार्ट एलिमेंट ट्रैकिंग: बुद्धिमान समानता एल्गोरिदम का उपयोग करके वेबसाइट परिवर्तनों के बाद एलिमेंट को पुनः स्थित करें।
- 🎯 स्मार्ट लचीला चयन: CSS सेलेक्टर, XPath सेलेक्टर, फ़िल्टर-आधारित खोज, टेक्स्ट खोज, regex खोज और बहुत कुछ।
- 🔍 समान एलिमेंट खोजें: पाए गए एलिमेंट के समान एलिमेंट स्वचालित रूप से ढूँढें।
- 🤖 AI के साथ उपयोग के लिए MCP सर्वर: AI-सहायता प्राप्त वेब स्क्रैपिंग और डेटा निष्कर्षण के लिए अंतर्निहित MCP सर्वर। MCP सर्वर में शक्तिशाली, कस्टम क्षमताएँ हैं जो AI (Claude/Cursor/आदि) को पास करने से पहले लक्षित सामग्री निकालने के लिए Scrapling का लाभ उठाती हैं, जिससे संचालन तेज़ होता है और टोकन उपयोग कम करके लागत घटती है। (डेमो वीडियो) यह कॉल के दौरान ब्राउज़र सत्र खुले रख सकता है, पृष्ठ स्क्रीनशॉट ले सकता है और CDP पर रिमोट ब्राउज़र चला सकता है।
- 🧠 Agent Skill: एक इंस्टॉल-रेडी Agent Skill जो कोडिंग एजेंटों को पूरी लाइब्रेरी सिखाता है, ताकि वे Scrapling के साथ जो कोड लिखें वह अनुमान लगाने के बजाय वर्तमान API से मेल खाए।
उच्च-प्रदर्शन और युद्ध-परीक्षित आर्किटेक्चर
- 🚀 बिजली की गति: अनुकूलित प्रदर्शन जो अधिकांश Python स्क्रैपिंग लाइब्रेरी से बेहतर है।
- 🔋 मेमोरी कुशल: न्यूनतम मेमोरी फुटप्रिंट के लिए अनुकूलित डेटा संरचनाएँ और लेज़ी लोडिंग।
- ⚡ तेज़ JSON सीरियलाइज़ेशन: मानक लाइब्रेरी से 10x तेज़।
- 🏗️ युद्ध-परीक्षित: Scrapling में न केवल 92% परीक्षण कवरेज और पूर्ण टाइप हिंट कवरेज है, बल्कि पिछले वर्ष में सैकड़ों वेब स्क्रैपर द्वारा प्रतिदिन इसका उपयोग किया गया है।
डेवलपर/वेब स्क्रैपर अनुकूल अनुभव
- 🎯 इंटरैक्टिव वेब स्क्रैपिंग शेल: Scrapling एकीकरण, शॉर्टकट और वेब स्क्रैपिंग स्क्रिप्ट विकास को तेज़ करने के लिए नए टूल के साथ वैकल्पिक अंतर्निहित IPython शेल, जैसे curl अनुरोधों को Scrapling अनुरोधों में बदलना और ब्राउज़र में अनुरोध परिणाम देखना।
- 🚀 इसे सीधे टर्मिनल से उपयोग करें: वैकल्पिक रूप से, आप कोड की एक भी पंक्ति लिखे बिना URL स्क्रैप करने के लिए Scrapling का उपयोग कर सकते हैं!
- 🛠️ समृद्ध नेविगेशन API: पैरेंट, सिबलिंग और चाइल्ड नेविगेशन विधियों के साथ उन्नत DOM ट्रैवर्सल।
- 🧬 उन्नत टेक्स्ट प्रोसेसिंग: अंतर्निहित regex, सफाई विधियाँ और अनुकूलित स्ट्रिंग ऑपरेशन।
- 📝 स्वचालित सेलेक्टर जनरेशन: किसी भी एलिमेंट के लिए मजबूत CSS/XPath सेलेक्टर उत्पन्न करें।
- 🔌 परिचित API: Scrapy/BeautifulSoup के समान, जिसमें Scrapy/Parsel में उपयोग किए गए समान स्यूडो-एलिमेंट हैं।
- 🤝 ड्रॉप-इन Scrapy एकीकरण: पहले से Scrapy में निवेश किया है? आप पहले से प्राप्त प्रतिक्रियाओं को Scrapling के पार्सर से पार्स करने के लिए किसी भी कॉलबैक को
scrapling_responseसे डेकोरेट करें, किसी पुनर्लेखन की आवश्यकता नहीं है। - 📘 संपूर्ण टाइप कवरेज: उत्कृष्ट IDE समर्थन और कोड पूर्णता के लिए पूर्ण टाइप हिंट। प्रत्येक परिवर्तन के साथ संपूर्ण कोडबेस PyRight और MyPy के साथ स्वचालित रूप से स्कैन किया जाता है।
- 🔋 तैयार Docker इमेज: प्रत्येक रिलीज़ के साथ, सभी ब्राउज़रों वाली एक Docker इमेज स्वचालित रूप से बनाई और पुश की जाती है।
आरंभ करना
आइए गहराई में जाए बिना आपको एक त्वरित झलक दें कि 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()
Or use one-off requests
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
Or use one-off request style, it opens the browser for this request, then closes it after finishing
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())
CLI और इंटरैक्टिव शेल
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 के पार्सर की तुलना अन्य लोकप्रिय लाइब्रेरीज़ के नवीनतम संस्करणों से करते हैं।
टेक्स्ट निष्कर्षण गति परीक्षण (5000 नेस्टेड तत्व)
| # | 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 |
एलिमेंट समानता और टेक्स्ट खोज प्रदर्शन
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 लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
आभार
इस प्रोजेक्ट में निम्नलिखित से अनुकूलित कोड शामिल है:
- Parsel (BSD लाइसेंस)-translator सबमॉड्यूल के लिए उपयोग किया गया





