ट्राफ़िलाटूरा वेब स्क्रैपिंग: एलएलएम के लिए साफ़ पाठ निकालना
Web Data Collection Specialist
TL;DR:
- ट्रैफिलेटुरा कच्चे HTML पृष्ठ को साफ मुख्य-सामग्री पाठ में बदल देता है, नेविगेशन, साइडबार और फुटर को हटा देता है ताकि एक भाषा मॉडल सामग्री को देख सके और क्रोम को नहीं।
- उदाहरण पृष्ठ पर, 9,275 वर्ण का HTML 1,324 वर्ण के साफ पाठ में बदल जाता है, जो 86% की कमी है जो सीधे LLM के संदर्भ विंडो में आती है।
- ट्रैफिलेटुरा के पास कोई फेच परत नहीं है जो ब्लॉकों को साफ करे, इसलिए यह गाइड स्क्रैपलेस को पुनर्प्राप्ति के लिए ट्रैफिलेटुरा के साथ निष्कर्षण के लिए जोड़ता है।
trafilatura.extractसामान्य पाठ उत्पन्न करता है, और उसी कॉल के साथoutput_format="markdown"या"json"Markdown या शीर्षक, लेखक और तारीख के साथ एक मेटाडेटा रिकॉर्ड देता है।- विभाजन साफ है: स्क्रैपलेस पृष्ठ प्राप्त करता है, ट्रैफिलेटुरा उसमें से लेख निकालता है।
- स्क्रैपलेस मुफ्त योजना पर शुरू करें और एक्सट्रैक्टर को अपने पृष्ठों की ओर निर्देशित करें।
एक स्क्रैप किया गया HTML पृष्ठ अधिकांशतः वह चीज नहीं है जो आप चाहते हैं। नेविगेशन, कुकी बैनर, संबंधित लेखों के रेल, और फुटर अधिकांश बाइट्स बनाते हैं, और इन सभी को एक भाषा मॉडल को फीड करना टोकन बर्बाद करता है और संकेत को पतला करता है। ट्रैफिलेटुरा उस समस्या का दूसरा आधा हल करता है: दिया गया HTML, यह मुख्य सामग्री को खोजता है और इसे साफ पाठ के रूप में लौटाता है। यह पहले आधे का हल नहीं करता, क्योंकि यह एक पृष्ठ को नहीं ला सकता है जो प्रतिरोध करता है।
यह गाइड दोनों आधों को जोड़ता है। स्क्रैपलेस यूनिवर्सल स्क्रैपिंग एपीआई पृष्ठ को पुनर्प्राप्त करता है, और ट्रैफिलेटुरा लेख को निकालता है। नीचे दिया गया हर नंबर एक सार्वजनिक पृष्ठ के खिलाफ एक वास्तविक रन से आता है।
ट्रैफिलेटुरा क्या करता है
ट्रैफिलेटुरा एक मुख्य-सामग्री निष्कर्षण पुस्तकालय है: यह HTML पढ़ता है और लेख का पाठ उसके चारों ओर के बायलरप्लेट के बिना लौटाता है। यह नेविगेशन से सामग्री को बताने के लिए पृष्ठ संरचना को चलाता है, और इसका निष्कर्षण गुणवत्ता उस पेपर में बेंचमार्क किया गया है जिसने इसे पेश किया. किसी भी व्यक्ति के लिए जो एक पुनर्प्राप्ति या LLM पाइपलाइन बना रहा है, यह "मेरे पास HTML है" और "मेरे पास एम्बेडिंग के लायक पाठ है" के बीच का कदम है।
जो ट्रैफिलेटुरा नहीं है वह एक स्क्रैपर है। इसके पास कोई ब्राउजर, कोई प्रॉक्सी, और कोई पहुँच चुनौती को पार करने का तरीका नहीं है। इसका अंतर्निहित fetch_url एक सरल HTTP क्लाइंट है, इसलिए एक सुरक्षित पृष्ठ पर यह एक ब्लॉक पृष्ठ प्राप्त करता है और निस्वार्थता से ब्लॉक को निकालता है। यही कारण है कि पुनर्प्राप्ति का काम इसके लिए बनाए गए एक उपकरण को सौंपा जाता है।
इंस्टॉल करें
ट्रैफिलेटुरा एक सिंगल पिप इंस्टॉल है।
bash
pip install trafilatura
शेल में अपना स्क्रैपलेस कुंजी सेट करें। रन टाइम पर असली कुंजी का उपयोग करें और प्लेसहोल्डर को अपने स्रोत से बाहर रखें।
bash
export SCRAPELESS_API_KEY="sk_your_key_here"
मूल निष्कर्षण
स्क्रैपलेस के साथ पृष्ठ प्राप्त करें, फिर HTML को trafilatura.extract को सौंपें। यह मुख्य सामग्री को साफ पाठ के रूप में लौटाता है।
python
import json
import os
import urllib.request
import trafilatura
API_URL = "https://api.scrapeless.com/api/v2/unlocker/request"
TARGET = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
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)
text = trafilatura.extract(html)
print(f"raw html chars: {len(html)}")
print(f"clean text chars: {len(text)}")
print(f"boilerplate removed: {100 * (1 - len(text) / len(html)):.0f}%")
आउटपुट दिखाता है कि पृष्ठ कितना सिकुड़ जाता है जब क्रोम हटा दिया जाता है।
text
raw html chars: 9275
clean text chars: 1324
boilerplate removed: 86%
जो 1,324 वर्ण शेष रहते हैं वह शीर्षक, कीमत, उपलब्धता, और उत्पाद विवरण हैं; नेविगेशन, ब्रेडक्रंब, और फुटर गायब हैं। वह 86% की कमी वह टोकन है जिसके लिए आप अब एक मॉडल को पढ़ने के लिए भुगतान नहीं करते हैं।
मार्कडाउन और मेटाडेटा
सामान्य पाठ डिफ़ॉल्ट है, लेकिन एक पुनर्प्राप्ति पाइपलाइन आम तौर पर संरचना चाहती है। वही extract कॉल एक output_format लेता है, इसलिए मार्कडाउन शीर्षक और सूचियाँ रखता है जिसे एक मॉडल अच्छे से पढ़ता है।
python
markdown = trafilatura.extract(html, output_format="markdown")
print(f"markdown chars: {len(markdown)}")
उत्पत्ति के लिए, मेटाडेटा के साथ JSON मांगें। रिकॉर्ड शीर्षक, लेखक, होस्टनाम, तारीख, और भाषा के साथ पाठ ले जाता है, जो आप एक एम्बेडिंग के बगल में स्टोर करते हैं ताकि पुनर्प्राप्त किए गए खंड अपने स्रोत का संदर्भ दे सकें।
python
record = json.loads(trafilatura.extract(html, output_format="json", with_metadata=True))
print(f"title: {record['title']}")
संपूर्ण एक्स्ट्रैक्टर
सभी चीज़ों को एकत्रित करें जैसे फ़ेच, टेक्स्ट, मार्कडाउन, और मेटाडेटा, और एक स्क्रिप्ट एक URL को लेना है जो एक डाउनस्ट्रीम पाइपलाइन को हर चीज़ की आवश्यकता होती है।
python
import json
import os
import urllib.request
import trafilatura
API_URL = "https://api.scrapeless.com/api/v2/unlocker/request"
TARGET = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
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)
print(f"कच्चे एचटीएमएल वर्ण: {len(html)}")
text = trafilatura.extract(html)
print(f"साफ़ टेक्स्ट वर्ण: {len(text)}")
print(f"बॉयलरप्लेट हटा दिया गया: {100 * (1 - len(text) / len(html)):.0f}%")
markdown = trafilatura.extract(html, output_format="markdown")
print(f"मार्कडाउन वर्ण: {len(markdown)}")
record = json.loads(trafilatura.extract(html, output_format="json", with_metadata=True))
print(f"शीर्षक: {record['title']}")
प्रकार्य प्रत्येक आउटपुट की रिपोर्ट करता है जिसे पाइपलाइन उपयोग करती है।
text
कच्चे एचटीएमएल वर्ण: 9275
साफ़ टेक्स्ट वर्ण: 1324
बॉयलरप्लेट हटा दिया गया: 86%
मार्कडाउन वर्ण: 1474
शीर्षक: अ लाइट इन द एटिक
ट्राफ़िलाटुरा कहाँ रुकता है
ट्राफ़िलाटुरा निकालता है; यह एक ब्लॉक के परे पुनः प्राप्त नहीं करता है, और वह सीमा इस गाइड के दो टूल्स का उपयोग करने का कारण है। ट्राफ़िलाटुरा की अपनी फ़ेच एक सुरक्षात्मक पृष्ठ पर इंगित करें और यह एक चुनौती या एक खाली खोल प्राप्त करता है, फिर इस पर से कोई उपयोगी सामग्री नहीं निकलती। स्क्रैपलेस पुनः प्राप्त करने का कार्य संभालता है, तैयार किया हुआ एचटीएमएल लौटाता है, और ट्राफ़िलाटुरा वहां से आगे बढ़ता है। जब एक लक्षित लेख को जावास्क्रिप्ट द्वारा प्रस्तुत करता है, तो फ़ेच में js_render को True पर सेट करें ताकि ट्राफ़िलाटुरा को प्राप्त एचटीएमएल में पहले से ही सामग्री शामिल हो; यहाँ, जब मार्कअप सर्वर द्वारा प्रस्तुत किया जाता है, तो इसे False पर छोड़ दें।
इससे पहले कि आप इसे किसी साइट पर चलाएँ, इसकी robots.txt और शर्तों को पढ़ें। रोबोट्स बहिष्करण प्रोटोकॉल यह बताता है कि एक साइट स्वचालित ग्राहकों से किन पथों को टालने के लिए कहती है, और इसका सम्मान करना एक निष्कर्षण पाइपलाइन को स्थायी बनाए रखता है। व्यापक संवेदन प्रक्रिया के लिए, आरएजी के लिए स्वच्छ वेब टेक्स्ट पाइपलाइन बनाने पर गाइड दिखाता है कि यह निष्कर्षण चरण कहाँ फिट होता है।
क्या आप इसे अपने खुद के पृष्ठों पर आज़माने के लिए तैयार हैं? एक मुफ्त स्क्रैपलेस खाता बनाएँ और लक्षित URL बदलें।
निष्कर्ष
स्वच्छ टेक्स्ट वह है जो एक भाषा मॉडल वास्तव में आवश्यक है, और वहां पहुँचने के लिए दो चरण हैं: पुनः प्राप्त करें, फिर निकालें। स्क्रैपलेस पृष्ठ लौटाता है, और ट्राफ़िलाटुरा 9,275 वर्णों के एचटीएमएल को 1,324 वर्णों के सामग्री में, टेक्स्ट, मार्कडाउन, या मेटाडेटा रिकॉर्ड में परिवर्तित करता है। ट्राफ़िलाटुरा डॉक्यूमेंटेशन आउटपुट स्वरूपों और ट्यूनिंग विकल्पों को पूरी तरह से कवर करता है। संपूर्ण स्क्रिप्ट से शुरू करें, अपनी खुद की URL स्वैप करें, और परिणाम को अपने एम्बेडिंग या LLM चरण में फ़ीड करें।
स्क्रैपलेस मुफ्त योजना से शुरुआत करें ताकि आप अपने पृष्ठ पुनः प्राप्त कर सकें, और जब आप एक आवर्ती काम को आकार दें तो स्क्रैपलेस मूल्य निर्धारण देखें।
एफएक्यू
प्रश्न: क्या ट्राफ़िलाटुरा वेब पृष्ठों को खुद से फ़ेच करता है?
इसके पास एक अंतर्निहित fetch_url है, लेकिन यह एक साधारण HTTP क्लाइंट है जिसमें कोई अनब्लॉकिंग नहीं है, इसलिए यह उन पृष्ठों पर विफल होता है जो पहुँच चुनौती के पीछे हैं। इसे एक पुनः प्राप्ति उपकरण जैसे स्क्रैपलेस के साथ जोड़ें जो तैयार किया हुआ एचटीएमएल लौटाता है, और ट्राफ़िलाटुरा को इन एचटीएमएल से मुख्य सामग्री निकालने दीजिए।
प्रश्न: ट्राफ़िलाटुरा ब्यूटीफुलसूप से कैसे भिन्न है?
ब्यूटीफुलसूप एक पार्सर है: आप इसे बताते हैं कि किन तत्वों का चयन करना है। ट्राफ़िलाटुरा एक extractor है: यह निर्धारित करता है कि पृष्ठ का कौन सा भाग मुख्य सामग्री है और इसे लौटाता है, बिना चयनकर्ताओं को लिखने की जरूरत के। जब आपको विशिष्ट फ़ील्ड की जरूरत हो, तो ब्यूटीफुलसूप का उपयोग करें, और जब आप लेख की सामग्री को साफ़ टेक्स्ट के रूप में चाहते हैं, तो ट्राफ़िलाटुरा का उपयोग करें।
प्रश्न: ट्राफ़िलाटुरा किन आउटपुट स्वरूपों का समर्थन करता है?
extract फ़ंक्शन output_format के रूप में txt (डिफ़ॉल्ट), markdown, json, या xml लेता है। मार्कडाउन शीर्षक और सूचियों को LLM इनपुट के लिए बनाए रखता है, और with_metadata=True के साथ JSON शीर्षक, लेखक, दिनांक, और भाषा को टेक्स्ट के बगल में जोड़ता है।
प्रश्न: क्या ट्राफ़िलाटुरा शीर्षक और लेखक रख सकता है?
हाँ। extract को output_format="json" और with_metadata=True के साथ कॉल करें, और प्रतिफलित रिकॉर्ड में title, author, hostname, date, और language शामिल हैं। उस मेटाडेटा को एक एंबेडिंग के साथ संग्रहीत करने से एक पुनः प्राप्त खंड रिपोर्ट कर सकता है कि यह कहां से आया है।
प्रश्न: मुख्य सामग्री को निकालने के बजाय संपूर्ण पृष्ठ को LLM को क्यों भेजें?
पृष्ठ का अधिकांश हिस्सा नेविगेशन, विज्ञापन और फुटर होता है, जो उदाहरण पृष्ठ पर 86% अक्षरों का है। इसे सभी भेजना टोकन खर्च करता है और संकेत को दबा देता है, इसलिए मुख्य सामग्री को पहले निकालना लागत कम करता है और मॉडल को उस टेक्स्ट पर ध्यान केंद्रित करने में सुधार करता है जो महत्वपूर्ण है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



