
Scrapling v0.4.12
🕷️ एक अनुकूलित वेब स्क्रैपिंग फ्रेमवर्क जो एकल अनुरोध से लेकर पूर्ण पैमाने पर क्रॉल तक सब कुछ संभालता है!
आधुनिक वेब के लिए सहज वेब स्क्रैपिंग
العربيه | Español | Português (Brasil) | Français | Deutsch | 简体中文 | 日本語 | Русский | 한국어
चयन विधियाँ · फ़ेचर्स · स्पाइडर्स · प्रॉक्सी रोटेशन · CLI · MCP
Scrapling एक अनुकूली वेब स्क्रैपिंग फ्रेमवर्क है जो एकल अनुरोध से लेकर पूर्ण पैमाने की क्रॉलिंग तक सब कुछ संभालता है।
इसका पार्सर वेबसाइट में होने वाले बदलावों से सीखता है और जब पेज अपडेट होते हैं तो स्वचालित रूप से आपके एलिमेंट्स का पता लगा लेता है। इसके फ़ेचर्स Cloudflare Turnstile जैसे एंटी-बॉट सिस्टम को बिना किसी अतिरिक्त सेटअप के बायपास कर देते हैं। और इसका स्पाइडर फ्रेमवर्क आपको pause/resume, स्वचालित प्रॉक्सी रोटेशन, और एक क्रॉल गति के साथ समवर्ती, मल्टी-सेशन क्रॉल तक स्केल करने देता है जो इस बात के अनुसार समायोजित होती है कि प्रत्येक वेबसाइट कितनी तेज़ी से प्रतिक्रिया करती है और जब यह आपको ब्लॉक करना शुरू करती है तो पीछे हट जाती है - यह सब 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 पर Scrapling की पूरी समीक्षा (नवंबर 2025) पढ़ें, जो वेब स्क्रैपिंग को समर्पित #1 न्यूज़लेटर है। |
| Swiftproxy 195+ देशों में 80M+ IP के साथ स्केलेबल रेज़िडेंशियल प्रॉक्सी प्रदान करता है, जो तेज़, विश्वसनीय कनेक्शन, स्वचालित रोटेशन और मजबूत एंटी-ब्लॉक प्रदर्शन सुनिश्चित करता है। मुफ्त परीक्षण उपलब्ध है। |
| CoreClaw AI एजेंटों के लिए वेब डेटा API प्रदान करता है। Google Maps, LinkedIn, Instagram, YouTube, Amazon और अन्य से संरचित डेटा तक पहुंचें। |
| NiuProxy — $0.35/GB से रोटेटिंग रेज़िडेंशियल प्रॉक्सी। अपनी रिचार्ज पर 10% छूट के लिए विशेष Scrapling कोड PAY2 का उपयोग करें। |
क्या आप यहां अपना विज्ञापन दिखाना चाहते हैं? यहां क्लिक करें
प्रायोजक
क्या आप यहां अपना विज्ञापन दिखाना चाहते हैं? यहां क्लिक करें और अपने लिए उपयुक्त टियर चुनें!
मुख्य विशेषताएं
स्पाइडर - एक संपूर्ण क्रॉलिंग फ्रेमवर्क
- 🕷️ 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प्रिमिटिव - इसे टेम्पलेट्स के अंदर या स्वयं उपयोग करें। - 📦 अंतर्निहित निर्यात: हुक और अपनी खुद की पाइपलाइन या अंतर्निहित JSON/JSONL/CSV/XML एक्सपोर्टर के माध्यम से
result.items.to_json(),to_jsonl(),to_csv()औरto_xml()के साथ परिणाम निर्यात करें।
सत्र समर्थन के साथ उन्नत वेबसाइट फ़ेचिंग
- HTTP अनुरोध:
Fetcherक्लास के साथ तेज़ और स्टील्थी HTTP अनुरोध। ब्राउज़रों के TLS फिंगरप्रिंट, हेडर की नकल कर सकते हैं और HTTP/3 का उपयोग कर सकते हैं। - डायनामिक लोडिंग:
DynamicFetcherक्लास के माध्यम से पूर्ण ब्राउज़र ऑटोमेशन के साथ डायनामिक वेबसाइटें फ़ेच करें, जो Playwright के Chromium और Google के Chrome का समर्थन करता है। - एंटी-बॉट बायपास:
StealthyFetcherऔर फिंगरप्रिंट स्पूफिंग के साथ उन्नत स्टील्थ क्षमताएं। ऑटोमेशन के साथ सभी प्रकार के Cloudflare के Turnstile/Interstitial को आसानी से बायपास कर सकते हैं। - सत्र प्रबंधन: अनुरोधों में कुकी और स्थिति प्रबंधन के लिए
FetcherSession,StealthySessionऔरDynamicSessionक्लासों के साथ स्थायी सत्र समर्थन। - प्रॉक्सी रोटेशन: सभी सत्र प्रकारों में चक्रीय या कस्टम रोटेशन रणनीतियों के साथ अंतर्निहित
ProxyRotator, साथ ही प्रति-अनुरोध प्रॉक्सी ओवरराइड। - डोमेन और विज्ञापन ब्लॉकिंग: ब्राउज़र-आधारित फ़ेचर में विशिष्ट डोमेन (और उनके सबडोमेन) के अनुरोधों को ब्लॉक करें या अंतर्निहित विज्ञापन ब्लॉकिंग (~3,500 ज्ञात विज्ञापन/ट्रैकर डोमेन) सक्षम करें।
- DNS लीक रोकथाम: वैकल्पिक DNS-over-HTTPS समर्थन जो DNS क्वेरी को Cloudflare के DoH के माध्यम से रूट करता है, प्रॉक्सी का उपयोग करते समय DNS लीक को रोकता है।
- रिमोट ब्राउज़र: ब्राउज़र को स्थानीय रूप से लॉन्च करने के बजाय,
cdp_urlके साथ CDP के माध्यम से पहले से चल रहे ब्राउज़र से कनेक्ट करें, चाहे वह उसी मशीन पर हो, किसी अन्य होस्ट पर, या प्रबंधित ब्राउज़र प्रदाता पर। आप किसी भी ब्राउज़र फ़ेचर कोexecutable_pathके साथ अपने स्वयं के Chromium बिल्ड पर भी इंगित कर सकते हैं। - बैकग्राउंड API कैप्चर:
capture_xhrमें एक URL पैटर्न पास करें, और पृष्ठ लोड होने के दौरान किए गए सभी मेल खाने वाले XHR/fetch प्रतिक्रियाएं आपके लिएresponse.captured_xhrमेंResponseऑब्जेक्ट के रूप में एकत्र की जाती हैं - अनुरोधों को स्वयं रिवर्स-इंजीनियर किए बिना किसी साइट का API डेटा प्राप्त करें। - Async समर्थन: सभी फ़ेचर और समर्पित async सत्र क्लासों में पूर्ण async समर्थन।
अनुकूली स्क्रैपिंग
- 🔄 स्मार्ट एलिमेंट ट्रैकिंग: बुद्धिमान समानता एल्गोरिदम का उपयोग करके वेबसाइट परिवर्तनों के बाद एलिमेंट्स का पुनः स्थान निर्धारण।
- 🎯 स्मार्ट लचीला चयन: CSS सेलेक्टर, XPath सेलेक्टर, फ़िल्टर-आधारित खोज, टेक्स्ट खोज, regex खोज और बहुत कुछ।
- 🔍 समान एलिमेंट्स खोजें: मिले एलिमेंट्स के समान एलिमेंट्स को स्वचालित रूप से ढूंढें।
AI विशेषताएं
- 🤖 MCP सर्वर: AI चैटबॉट और एजेंटों (Claude/Cursor/आदि) को Scrapling के माध्यम से स्क्रैप करने दें, एक-शॉट या सत्र-आधारित टूल के साथ जो सादे HTTP अनुरोधों (किसी भी विधि), ब्राउज़र फ़ेच और Cloudflare को बायपास करने वाले स्टील्थ फ़ेच को कवर करते हैं। AI को देखने से पहले पृष्ठों को CSS सेलेक्टर के साथ संकुचित किया जाता है और प्रॉम्प्ट-इंजेक्शन सामग्री से हटा दिया जाता है, ताकि एजेंट कम पढ़े, कम लागत आए और छिपे हुए टेक्स्ट द्वारा अपहरण न किया जा सके। स्क्रीनशॉट, CDP पर रिमोट ब्राउज़र और डिफ़ॉल्ट-सुरक्षित HTTP ट्रांसपोर्ट शामिल हैं। (डेमो वीडियो)
- 🧠 एजेंट स्किल: एक तैयार-से-इंस्टॉल एजेंट स्किल जो कोडिंग एजेंटों को पूरी लाइब्रेरी सिखाता है, ताकि वे Scrapling के साथ जो कोड लिखें वह अनुमान लगाने के बजाय वर्तमान API से मेल खाए।
- 📚 RAG-तैयार Markdown: किसी भी पृष्ठ को एक पंक्ति (
page.markdown()) के साथ स्वच्छ, सैनिटाइज़्ड, LLM-तैयार Markdown में बदलें, याSiteToMarkdownSpiderटेम्पलेट के साथ पूरी वेबसाइट को Markdown कॉर्पस में क्रॉल करें, बिना लूप में LLM के। (दस्तावेज़)
उच्च-प्रदर्शन और युद्ध-परीक्षित आर्किटेक्चर
- 🚀 बिजली की तेज़ी: अनुकूलित प्रदर्शन जो अधिकांश Python स्क्रैपिंग लाइब्रेरीज़ से बेहतर है।
- 🔋 मेमोरी कुशल: न्यूनतम मेमोरी फुटप्रिंट के लिए अनुकूलित डेटा संरचनाएं और लेज़ी लोडिंग।
- ⚡ तेज़ JSON सीरियलाइज़ेशन: मानक लाइब्रेरी से 10x तेज़।
- 🏗️ युद्ध-परीक्षित: न केवल Scrapling में 92% टेस्ट कवरेज और पूर्ण टाइप हिंट कवरेज है, बल्कि पिछले वर्ष में सैकड़ों वेब स्क्रैपर द्वारा प्रतिदिन उपयोग किया गया है।
डेवलपर/वेब स्क्रैपर अनुकूल अनुभव
- 🎯 इंटरैक्टिव वेब स्क्रैपिंग शेल: Scrapling एकीकरण, शॉर्टकट और वेब स्क्रैपिंग स्क्रिप्ट विकास को गति देने के लिए नए टूल के साथ वैकल्पिक अंतर्निहित IPython शेल, जैसे curl अनुरोधों को Scrapling अनुरोधों में बदलना और अपने ब्राउज़र में अनुरोध परिणाम देखना।
- 🚀 सीधे टर्मिनल से उपयोग करें: वैकल्पिक रूप से, आप कोड की एक भी पंक्ति लिखे बिना URL स्क्रैप करने के लिए Scrapling का उपयोग कर सकते हैं!
- 🛠️ समृद्ध नेविगेशन API: पैरेंट, सिबलिंग और चाइल्ड नेविगेशन विधियों के साथ उन्नत DOM ट्रैवर्सल।
- 🧬 उन्नत टेक्स्ट प्रोसेसिंग: अंतर्निहित regex, सफाई विधियां और अनुकूलित स्ट्रिंग संचालन।
- 📝 स्वचालित सेलेक्टर जनरेशन: किसी भी एलिमेंट के लिए मजबूत CSS/XPath सेलेक्टर उत्पन्न करें।
- 🔌 परिचित API: Scrapy/BeautifulSoup के समान, Scrapy/Parsel में उपयोग किए जाने वाले समान स्यूडो-एलिमेंट्स के साथ।
- 🤝 ड्रॉप-इन Scrapy एकीकरण: पहले से Scrapy में निवेश किया है? किसी भी कॉलबैक को
scrapling_responseसे सजाएं ताकि आप पहले से फ़ेच की गई प्रतिक्रियाओं को Scrapling के पार्सर के साथ पार्स कर सकें, पुनर्लेखन की आवश्यकता नहीं। - 📘 पूर्ण टाइप कवरेज: उत्कृष्ट 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()
Ctrl+C दबाकर सुचारू रूप से रोकें - प्रगति स्वचालित रूप से सहेजी जाती है। बाद में, जब आप स्पाइडर को फिर से शुरू करें, तो वही 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("...")
और यह बिल्कुल उसी तरह काम करता है!
### Async सत्र प्रबंधन उदाहरण```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 सर्वर और इंटरैक्टिव Web Scraping Shell शामिल हैं। पूर्ण दस्तावेज़ यहाँ देखें।
प्रदर्शन बेंचमार्क
Scrapling केवल शक्तिशाली ही नहीं है—यह अत्यंत तेज़ भी है। निम्नलिखित बेंचमार्क Scrapling के पार्सर की तुलना अन्य लोकप्रिय लाइब्रेरीज़ के नवीनतम संस्करणों से करते हैं।
टेक्स्ट निष्कर्षण गति परीक्षण (5000 नेस्टेड तत्व)
| # | लाइब्रेरी | समय (ms) | 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 की अनुकूली तत्व-खोज क्षमताएँ विकल्पों से काफी बेहतर प्रदर्शन करती हैं:
| लाइब्रेरी | समय (ms) | 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 # सामान्य इंस्टॉल
scrapling install --force # फोर्स रीइंस्टॉल
```
यह सभी ब्राउज़र, उनकी सिस्टम निर्भरताओं और फिंगरप्रिंट हेरफेर निर्भरताओं को डाउनलोड करता है।
या आप कमांड चलाने के बजाय कोड से उन्हें इंस्टॉल कर सकते हैं, जैसे:
```python
from scrapling.cli import install
install([], standalone_mode=False) # सामान्य इंस्टॉल
install(["--force"], standalone_mode=False) # फोर्स रीइंस्टॉल
```
2. अतिरिक्त सुविधाएँ:
- MCP सर्वर सुविधा इंस्टॉल करें:
```bash
pip install "scrapling[ai]"
```
- ([RAG सिस्टम बनाने](https://scrapling.readthedocs.io/en/latest/ai/building-rag-systems.html)) के लिए निर्भरताएँ इंस्टॉल करें:
```bash
pip install "scrapling[rag]"
```
- शेल सुविधाएँ इंस्टॉल करें (वेब स्क्रेपिंग शेल और `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 और रिपॉजिटरी की main branch का उपयोग करके स्वचालित रूप से बनाई और पुश की जाती है।
## योगदान
हम योगदान का स्वागत करते हैं! शुरू करने से पहले कृपया हमारे [योगदान दिशानिर्देश](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 License)-translator सबमॉड्यूल के लिए उपयोग किया गया






