मार्कइटडाउन वेब स्क्रैपिंग: पृष्ठों को LLM-तैयार मार्कडाउन में बदलें
Advanced Data Extraction Specialist
TL;DR:
- MarkItDown एक स्क्रैप की गई HTML पृष्ठ को Markdown में बदलता है, शीर्षक, लिंक और सूचियाँ रखते हुए जो एक भाषा मॉडल अच्छी तरह से पढ़ता है।
- स्क्रैपिंग आपको मेमोरी में HTML देती है, इसलिए मार्गदर्शिका
convert_streamकोBytesIOऔर स्पष्ट.htmlएक्सटेंशन के साथ उपयोग करती है न कि फ़ाइल पथ के। - MarkItDown के पास ब्लॉक्स को साफ करने का कोई फ़ेच लेयर नहीं है, इसलिए Scrapeless पृष्ठ को प्राप्त करता है और MarkItDown इसे बदलता है।
- उदाहरण पृष्ठ पर, 11,021 HTML अक्षर 2,973 Markdown अक्षरों में बदलकर एक वास्तविक शीर्षक के साथ शुरू होते हैं।
- MarkItDown पूरे दस्तावेज़ को संरचित Markdown में बदलता है; जब आप केवल मुख्य लेख चाहते हैं और बायलाइन हटा दी जाती है, तो ट्राफिलटुरा के लिए पहुँचें।
- Scrapeless मुफ्त योजना पर शुरू करें और अपना पहला पृष्ठ बदलें।
भाषा मॉडल Markdown को कच्चे HTML से बेहतर पढ़ते हैं। Markdown उस संरचना को ले जाता है जिसकी एक मॉडल को आवश्यकता होती है, शीर्षक, सूचियाँ और लिंक, बिना टैग सूप, स्क्रिप्ट ब्लॉक्स, और इनलाइन शैलियों के जो एक HTML पृष्ठ को भरते हैं। MarkItDown, माइक्रोसॉफ्ट का दस्तावेज़-से-Markdown परिवर्तक, इस रूपांतरण को करता है, और यह HTML, PDF, ऑफिस दस्तावेज़ और अधिक को एक इंटरफ़ेस के माध्यम से संभालता है। यह क्या नहीं करता है वह पृष्ठ को फ़ेच करना है, जो है आधा स्क्रैपिंग कार्यप्रवाह को प्रदान करना है।
यह मार्गदर्शिका दोनों को जोड़ती है। Scrapeless यूनिवर्सल स्क्रैपिंग एपीआई पृष्ठ को प्राप्त करता है, और MarkItDown लौटाए गए HTML को Markdown में बदलता है। नीचे हर संख्या एक सार्वजनिक पृष्ठ के खिलाफ एक वास्तविक रन से आती है।
MarkItDown क्या करता है
MarkItDown एक दस्तावेज़ को लेता है और Markdown लौटाता है। इसका अस्तित्व का कारण LLM इनपुट है: यह ऐसा पाठ उत्पन्न करता है जो संरचना को एक टोकन-कुशल रूप में रखता है, जो कि Markdown के लिए व्यापक रूप से कार्यान्वित CommonMark विशिष्टता का पालन करता है जो यह उत्सर्जित करता है। MarkItDown संग्रह उन इनपुट प्रारूपों की सूची बनाता है जो यह स्वीकार करता है, जिसमें HTML, PDF, Word, PowerPoint, और चित्र शामिल हैं।
MarkItDown एक स्क्रेपर नहीं है। इसमें कोई ब्राउज़र नहीं है और न ही कोई पहुंच चुनौती के पार जाने का तरीका है, इसलिए यह आपको जो भी बाइट्स देता है उसे परिवर्तित करता है। एक लाइव, कभी-कभी-संरक्षित पृष्ठ से उन बाइट्स को प्राप्त करना एक अलग काम है।
स्थापित करें
MarkItDown एकल पिप इंस्टॉल है।
bash
pip install markitdown
शेल में अपना Scrapeless कुंजी सेट करें। रन टाइम पर असली कुंजी का उपयोग करें और अपने स्रोत से प्लेसहोल्डर को दूर रखें।
bash
export SCRAPELESS_API_KEY="sk_your_key_here"
स्क्रैप की गई HTML को Markdown में बदलें
स्क्रैपिंग एक HTML स्ट्रिंग लौटाता है, न कि एक फ़ाइल, इसलिए सही प्रवेश बिंदु convert_stream है। HTML को BytesIO में लपेटें और file_extension=".html" पास करें ताकि MarkItDown इसे HTML के रूप में पार्स कर सके। परिवर्तित Markdown परिणाम के text_content पर है।
python
import io
import json
import os
import urllib.request
from markitdown import MarkItDown
API_URL = "https://api.scrapeless.com/api/v2/unlocker/request"
TARGET = "https://quotes.toscrape.com/"
def fetch_html(url: str) -> str:
payload = json.dumps(
{"actor": "unlocker.webunlocker", "input": {"url": url, "js_render": False, "headless": False}}
).encode()
request = urllib.request.Request(
API_URL,
data=payload,
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"], "Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(request, timeout=90) as response:
return json.loads(response.read())["data"]
html = fetch_html(TARGET)
result = MarkItDown().convert_stream(io.BytesIO(html.encode("utf-8")), file_extension=".html")
markdown = result.text_content
print(f"raw html chars: {len(html)}")
print(f"markdown chars: {len(markdown)}")
print(f"starts with heading: {markdown.lstrip().startswith('#')}")
print("--- first lines of markdown ---")
for line in [line for line in markdown.splitlines() if line.strip()][:4]:
print(line)
रन आकारों की रिपोर्ट करता है और Markdown के शीर्ष को प्रिंट करता है।
text
raw html chars: 11021
markdown chars: 2973
starts with heading: True
--- first lines of markdown ---
# [Quotes to Scrape](/)
[Login](/login)
“दुनिया को जिस प्रकार से हमने इसे बनाया है, वह हमारे सोचने की प्रक्रिया है। इसे बदलने के बिना हमारे सोचने को बदलना नहीं हो सकता।”
अल्बर्ट आइंस्टीन द्वारा
आउटपुट एक वास्तविक Markdown शीर्षक और एक लिंक के साथ खुलता है, और पृष्ठ का पहला उद्धरण इसके बाद आता है। संरचना जो मॉडेल उपयोग कर सकता है रूपांतरण से बचती है, और 11,021 HTML अक्षर 2,973 Markdown अक्षरों में आते हैं।
LLM के लिए Markdown क्यों?
मार्कडाउन वह प्रारूप है जिसे सबसे अधिक भाषा मॉडल पढ़ने के लिए प्रशिक्षित होते हैं, इसलिए शीर्षक अनुभाग बन जाते हैं, लिंक पढ़ने योग्य रहते हैं, और सूचियाँ सूचियों की तरह बनी रहती हैं, यह सब मूल HTML की तुलना में बहुत कम टोकनों में। कच्चे HTML को पास करने से टैग और इनलाइन शैलियों पर टोकन का खर्च होता है, जिनसे मॉडल को आगे बढ़ने की आवश्यकता होती है, और यह उस संरचना को छुपा देता है जो मॉडल को सामग्री को व्यवस्थित करने में मदद करती है। पहले मार्कडाउन में परिवर्तित करना एक सस्ता कदम है जो हर डाउनस्ट्रीम कॉल पर लाभान्वित होता है।
जहां MarkItDown रुकता है
MarkItDown रूपांतरित करता है; यह एक ब्लॉक के पार नहीं जाता है, यही कारण है कि यह गाइड इसे एक पुनर्प्राप्ति उपकरण के साथ जोड़ता है। MarkItDown को एक सीधी क्लाइंट से प्राप्त सुरक्षित पृष्ठ का HTML दें और यह निष्ठापूर्वक एक चुनौती पृष्ठ को मार्कडाउन में बदल देता है। Scrapeless वास्तविक रेंडर किया गया HTML लौटाता है, और MarkItDown उसे रूपांतरित करता है। जब एक लक्ष्य Javascript के साथ अपनी सामग्री बनाता है, तो अनुरोध में js_render को True पर सेट करें ताकि HTML में पहले से ही सामग्री हो; जब मार्कअप सर्वर-रेंडर किया गया हो, तो इसे False पर छोड़ दें, जैसा कि यहां है।
MarkItDown और ट्राफिलाटुरा अलग-अलग समस्याएँ हल करते हैं। MarkItDown पूरे दस्तावेज़ को संरचित मार्कडाउन में परिवर्तित करता है, पृष्ठ के आकार को बनाए रखते हुए। ट्राफिलाटुरा मुख्य लेख को अलग करता है और बॉयलरप्लेट को हटा देता है। जब आप पृष्ठ को मार्कडाउन के रूप में चाहते हैं तो MarkItDown के साथ रूपांतरित करें; जब आप केवल लेख का शरीर चाहते हैं तो ट्राफिलाटुरा के साथ निकालें।
इससे पहले कि आप इसे एक साइट पर चलाएँ, इसके robots.txt और शर्तों को पढ़ें। रोबोट्स ए exclusion प्रोटोकॉल बताता है कि एक साइट स्वचालित ग्राहकों से किन पथों से बचने के लिए कहती है, और इसका सम्मान करना रूपांतरण पाइपलाइन को सतत रखता है। व्यापक पैटर्न के लिए, एआई सामग्री पाइपलाइन पर गाइड दिखाता है कि इस तरह के रूपांतरण के चरण में कहां फिट बैठता है।
क्या आप अपने खुद के पृष्ठों को परिवर्तित करने के लिए तैयार हैं? एक मुफ्त Scrapeless खाता बनाएँ और लक्षित URL बदलें।
निष्कर्ष
मॉडल को मार्कडाउन देने के बजाय HTML देना एक छोटा बदलाव है जिसमें वास्तविक लाभ होता है, और इसके लिए दो उपकरणों की आवश्यकता होती है: पृष्ठ पुनर्प्राप्ति के लिए Scrapeless और इसे परिवर्तित करने के लिए MarkItDown। एक convert_stream कॉल 11,021 HTML वर्णों को 2,973 संरचित मार्कडाउन वर्णों में बदल देती है, जो एम्बेडिंग चरण या एक प्रॉम्प्ट के लिए तैयार होती है। ऊपर दिए गए स्क्रिप्ट से शुरू करें, इसे अपने स्वयं के URL की ओर इंगित करें, और मार्कडाउन को अपने मॉडल को पास करें।
Scrapeless मुफ्त योजना के साथ शुरू करें अपने खुद के पृष्ठों को पुनर्प्राप्त करने के लिए, और जब आप एक आवर्ती कार्य का आकार बनाते हैं तो Scrapeless मूल्य निर्धारण देखें।
सामान्य प्रश्न
प्रश्न: क्या MarkItDown अपने आप वेब पृष्ठों को पुनर्प्राप्त करता है?
नहीं। MarkItDown दस्तावेजों को रूपांतरित करता है जो आप इसे देते हैं और इसमें कोई ब्राउज़र या अनब्लॉकिंग नहीं है, इसलिए एक सुरक्षित पृष्ठ पर यह सामग्री के बजाय एक चुनौती पृष्ठ को रूपांतरित करेगा। इसे एक पुनर्प्राप्ति उपकरण जैसे Scrapeless के साथ जोड़ें जो रेंडर किया गया HTML लौटाता है, फिर उस HTML को परिवर्तित करें।
प्रश्न: मैं बिना फ़ाइल को सहेजे MarkItDown को स्क्रैप किया हुआ HTML कैसे पारित करूँ?
convert_stream का उपयोग करें जिसमें HTML io.BytesIO में लिपटे हुए और file_extension=".html" के साथ हो, ताकि MarkItDown मेमोरी में बाइट्स को HTML के रूप में पार्स करे। इससे स्क्रैप किए गए पृष्ठ को डिस्क पर लिखने से बचा जाता है और मार्कडाउन परिणाम के text_content पर होता है।
प्रश्न: MarkItDown किस प्रारूप को परिवर्तित कर सकता है?
MarkItDown HTML, PDF, Word, PowerPoint, Excel, चित्र और कई अन्य प्रारूपों को स्वीकार करता है, प्रत्येक को उसी इंटरफ़ेस के माध्यम से मार्कडाउन में रूपांतरित करता है। वेब स्क्रैपिंग के लिए प्रासंगिक इनपुट HTML है, लेकिन यदि आपकी पाइपलाइन उन्हें भी एकत्रित करती है तो वही कनवर्टर स्क्रैप किए गए PDF या स्प्रेडशीट को भी संभालता है।
प्रश्न: क्या मुझे MarkItDown या ट्राफिलाटुरा का उपयोग करना चाहिए?
जब आप पूरे दस्तावेज़ को संरचित मार्कडाउन में परिवर्तित करना चाहते हैं तो MarkItDown का उपयोग करें, और जब आप मुख्य लेख को नेविगेशन और फुटरों के बिना चाहते हैं तो ट्राफिलाटुरा का उपयोग करें। वे अलग-अलग समस्याएँ हल करते हैं: एक एक प्रारूप रूपांतरक है, दूसरा मुख्य सामग्री निकालने वाला है।
प्रश्न: मॉडल को कॉल करने से पहले मार्कडाउन में क्यों परिवर्तित करें?
मार्कडाउन शीर्षकों, सूचियों और लिंक को संकुचित रूप में रखता है जिसे भाषा मॉडल अच्छी तरह से पढ़ता है, जबकि कच्चा HTML टैग और शैलियों पर टोकन खर्च करता है जिनसे मॉडल को अनदेखा करना पड़ता है। पहले रूपांतरित करना टोकन की लागत को कम करता है और मॉडल को काम करने के लिए साफ़ संरचना देता है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



