Web स्क्रैपिंग के लिए Scrapeless के साथ कंटेनर सेवा
Lead Scraping Automation Engineer
TL;DR:
- कन्टेनर के रूप में सेवा स्क्रैपिंग कार्यकर्ताओं के लिए रनटाइम प्रबंधित करता है। आपका एप्लिकेशन अभी भी लक्ष्य परिभाषित करता है, प्रतिक्रिया को मान्य करता है, और निर्णय लेता है कि रिकॉर्ड्स कहाँ स्थित हैं।
- स्क्रैपलेस वेब अनलॉकर कार्यकर्ता कन्टेनर के बाहर वेब-एक्सेस अनुरोध को संभालता है। इस कार्यप्रवाह के लिए कन्टेनर को एक HTTP क्लाइंट की आवश्यकता होती है न कि एक स्थानीय रूप से स्थापित ब्राउज़र।
- पूरा किया गया प्रक्रिया उपयोगी डेटा का प्रमाण नहीं है। स्वीकृत रिकॉर्ड लिखने से पहले लक्षित सामग्री की जांच करें।
- रनटाइम सीक्रेट्स और स्थायी भंडारण इमेज के बाहर होने चाहिए। एक प्रतिस्थापन कन्टेनर को कॉन्फ़िगरेशन से शुरू करना चाहिए, न कि एक पुराने फ़ाइल सिस्टम से क्रेडेंशियल्स को पुनर्प्राप्त करना चाहिए।
- शुरू करने के लिए स्वतंत्र। एक स्क्रैपलेस खाता बनाएं और एक छोटे कार्यभार का मूल्यांकन करने के लिए उपलब्ध मुक्त क्रेडिट का उपयोग करें।
परिचय: एक कन्टेनर को एक अनुमानित कार्य करना चाहिए
एक स्क्रैपिंग कार्यकर्ता अपने जीवन के अधिकांश समय को किसी अन्य प्रणाली के लिए इंतज़ार करते हुए बिताता है। यह एक अनुरोध भेजता है, एक पृष्ठ की प्रतीक्षा करता है, प्रतिक्रिया की जांच करता है, और एक परिणाम लिखता है। इन चरणों को एक कन्टेनर में पैकेज करना निष्पादन वातावरण को दोहराने योग्य बनाता है। यह यह निर्धारित नहीं करता कि लौटाए गए पृष्ठ में एप्लिकेशन के लिए आवश्यक जानकारी है या नहीं।
कन्टेनर के रूप में सेवा, या CaaS, एक टीम को उन कन्टेनरों के तैनाती और संचालन के लिए प्रबंधित इन्फ्रास्ट्रक्चर प्रदान करता है। उपयोगी डिज़ाइन प्रश्न है कि प्रत्येक जिम्मेदारी को कहाँ रखा जाए। रनटाइम कार्यकर्ता का कार्यक्रम बनाता है। कार्यकर्ता कार्य का मालिक है। एक वेब-एक्सेस सेवा लक्ष्य अनुरोध को संभालती है। भंडारण कार्यकर्ता के बाहर निकलने के बाद सबूत को बनाए रखता है।
यह ट्यूटोरियल स्क्रैपलेस वेब अनलॉकर के चारों ओर एक छोटा पायथन कार्यकर्ता विकसित करता है और इसे एक कन्टेनर प्लेटफ़ॉर्म के लिए पैकेज करना दिखाता है। यही अलगाव एक प्रतिस्पर्धात्मक मूल्य निर्धारण पाइपलाइन में उपयोगी है, जहाँ एक पृष्ठ प्राप्त करना केवल डेटा मानकीकरण और विश्लेषण से पहले एक चरण है।
CaaS वास्तव में क्या प्रबंधित करता है
कन्टेनर के रूप में सेवा कन्टेनर निष्पादन को प्रबंधित करता है जबकि आपका एप्लिकेशन अपने कार्यभार और डेटा की जिम्मेदारी बनाए रखता है। प्लेटफ़ॉर्म के अनुसार, प्रबंधित परत अनुसूची, संसाधन आवंटन, नेटवर्किंग, स्वास्थ्य जांच, और स्केलिंग को कवर कर सकती है।
एक Dockerfile यह वर्णन करता है कि एक इमेज कैसे बनाएँ। एक इमेज पैकेज्ड एप्लिकेशन है। एक कन्टेनर एक चल रहा उदाहरण है। एक ऑर्केस्ट्रेटर यह तय करता है कि उदाहरण कहाँ और कब चलेंगे। ये अवधारणाएँ एक साथ मिलकर काम करती हैं, लेकिन केवल एक Dockerfile एक प्रबंधित प्लेटफ़ॉर्म का प्रावधान नहीं करता है। Dockerfile निर्माण मॉडल नीचे कार्यकर्ता को पैकेज करने के लिए प्रारंभ बिंदु है।
| जिम्मेदारी | इस डिज़ाइन में मालिक | बनाए रखने के लिए सबूत |
|---|---|---|
| कार्य को शेड्यूल करें | आपका एप्लिकेशन या नौकरी शेड्यूलर | कार्य पहचानकर्ता और अनुमोदित URL |
| कार्यकर्ता चलाएँ | कन्टेनर प्लेटफ़ॉर्म | निकासी स्थिति और संसाधन उपयोग |
| पृष्ठ को अनुरोध करें | स्क्रैपलेस वेब अनलॉकर | कच्ची प्रतिक्रिया और सेवा परिणाम |
| सामग्री को मान्य करें | आपका कार्यकर्ता | अपेक्षित-सामग्री जांच |
| स्वीकृत डेटा को सुरक्षित करें | आपका भंडारण एकीकरण | रिकॉर्ड की कुंजी और लिखने की पुष्टि |
CaaS तब उपयोगी है जब वही कार्यकर्ता वातावरण के पार बार-बार चलाना हो या जब कार्य की मात्रा में कई कार्यकर्ताओं की आवश्यकता हो। एकल स्थानीय स्क्रिप्ट कभी-कभी निर्यात के लिए पर्याप्त हो सकती है। जब इसके संचालन के लाभ तैनाती और निगरानी के काम को औचित्य प्रदान करते हैं, तो एक प्रबंधित रनटाइम चुनें।
पाइपलाइन एक नज़र में
पाइपलाइन एक स्वीकृत URL को एक संग्रहीत पृष्ठ प्रतिक्रिया में एक स्पष्ट मान्यता निर्णय के साथ बदल देती है। एक प्रक्रिया प्रति एक कार्य से शुरू करें, फिर जब कार्य अनुबंध स्थिर हो जाए तो एक कतार जोड़ें।
अनुक्रम है: कार्य इनपुट → वेब अनलॉकर अनुरोध → प्रतिक्रिया कैप्चर → अपेक्षित-सामग्री जांच → स्वीकृत रिकॉर्ड। प्रदर्शनी एक माउंटेड आउटपुट निर्देशिका पर लिखती है। एक उत्पादन कार्यान्वयन को उस निर्देशिका को स्थायी भंडारण या एक स्थापित मात्रा के साथ बदलना चाहिए जो चुने हुए प्लेटफ़ॉर्म के लिए उपयुक्त हो।
स्क्रैपलेस वेब अनलॉकर पहुँच चरण में है। यह एक कन्टेनर शेड्यूलर, कतार, या डेटाबेस नहीं है। उस सीमा को स्पष्ट रखना इसे तैनाती प्लेटफ़ॉर्म को फिर से लिखे बिना बदलना संभव बनाता है।
पूर्वापेक्षाएँ
आपको पायथन, Requests पैकेज, एक सक्रिय स्क्रैपलेस API कुंजी, और एक सार्वजनिक लक्ष्य की आवश्यकता है, जिसे आप इकट्ठा करने के लिए अधिकृत हैं। रनटाइम वातावरण में SCRAPELESS_API_KEY, TARGET_URL, और EXPECTED_TEXT सेट करें। अंतिम मान एक वाक्यांश है जो इच्छित पृष्ठ में होना चाहिए, न कि एक सार्वभौमिक चुनौती डिटेक्टर।
कंटेनर निष्पादन के लिए अतिरिक्त रूप से डॉकर या एक संगत निर्माण समय की आवश्यकता होती है। तैनाती के लिए एक कंटेनर रजिस्ट्री और एक कॉन्फ़िगर की गई CaaS खाता या क्लस्टर की आवश्यकता होती है। प्रामाणिक स्क्रेपलेस निष्पादन और कंटेनर निर्माण उदाहरण के लिए वातावरण-निर्भर पूर्वापेक्षाएँ हैं; यहाँ कोई सफल सेवा प्रतिक्रिया या प्रबंधित तैनाती का आश्वासन नहीं दिया गया है।
स्थानीय पायथन निर्भरता के लिए, python -m pip install requests चलाएँ। वेब अनलॉकर अनुरोध अनुबंध नीचे उपयोग किए जाने वाले अभिनेता और अनुरोध लिफाफे को परिभाषित करता है।
चरण 1: एक सीमित पृष्ठ कार्यकर्ता लिखें
कार्यकर्ता एक अनुरोध जमा करता है और यह तय करने से पहले इसकी कच्ची प्रतिक्रिया को बनाए रखता है कि पृष्ठ स्वीकार्य है या नहीं। worker.py के रूप में निम्नलिखित सहेजें।
नोट: इस ब्लॉक के लिए आपका स्क्रेपलेस एपीआई कुंजी और एक स्वीकृत लक्ष्य की आवश्यकता है। इस उदाहरण के लिए प्रामाणिक अनुरोध निष्पादित नहीं किया गया है; तैनाती से पहले अपनी खाता के विरुद्ध प्रतिक्रिया को मान्य करें।
python
import hashlib
import json
import os
import time
from pathlib import Path
import requests
url = os.environ["TARGET_URL"]
expected = os.environ["EXPECTED_TEXT"]
output = Path(os.environ.get("OUTPUT_DIR", "/output"))
output.mkdir(parents=True, exist_ok=True)
response = requests.post(
"https://api.scrapeless.com/api/v2/unlocker/request",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
json={
"actor": "unlocker.webunlocker",
"input": {"url": url, "method": "GET", "redirect": False},
"proxy": {"country": "ANY"},
},
timeout=120,
)
response.raise_for_status()
body = response.content
capture_id = hashlib.sha256(body).hexdigest()
(output / f"{capture_id}.response").write_bytes(body)
if expected.casefold() not in response.text.casefold():
raise RuntimeError("Expected page content was not found")
record = {
"requested_url": url,
"collected_at_unix": int(time.time()),
"response_sha256": capture_id,
"response_bytes": len(body),
"http_status": response.status_code,
"validation": "expected_text_present",
}
(output / f"{capture_id}.json").write_text(json.dumps(record, indent=2))
print(json.dumps(record))
रिपोर्ट एक अनुप्रयोग-परिभाषित आउटपुट है, स्क्रेपलेस प्रतिक्रिया फ़ील्ड के बारे में कोई दावा नहीं है। कच्ची प्रतिक्रिया को इस विचार के बिना बनाए रखा गया है कि हर लक्ष्य समान सामग्री प्रकार उत्पन्न करता है। कॉन्फ़िगर की गई टाइमआउट ग्राहक प्रतीक्षा को सीमित करता है; यह सेवा-स्तरीय गारंटी को परिभाषित नहीं करता है।
एक अपेक्षित वाक्यांश एक न्यूनतम जांच है। संरचित डेटा के लिए, इसे एक पार्सर से बदलें जो आवश्यक फ़ील्डों की आवश्यकता करता है और उनके प्रकारों को मान्य करता है। एक त्रुटि संदेश में प्रकट होने वाला शीर्षक एक वैध उत्पाद रिकॉर्ड के रूप में योग्य नहीं होना चाहिए। HTTP प्रतिक्रिया सार्थकता प्रोटोकॉल परिणामों का वर्णन करता है; व्यावसायिक मान्यता आपके अनुप्रयोग को संबंधित है।
स्क्रेपलेस के साथ डेटा खींचना शुरू करें
स्क्रेपलेस के साथ अपने वेब स्क्रेपिंग और स्वचालन कार्यप्रवाह को पावर अप करें!
आज ही साइन अप करें और पाएं $5 मुफ्त क्रेडिट — कोई क्रेडिट कार्ड आवश्यक नहीं।अपना मुफ्त क्रेडिट अभी स्क्रेपलेस डैशबोर्ड में प्राप्त करें।
चरण 2: प्रमाण पत्र के बिना कार्यकर्ता का पैकेज बनाएं
छवि में कोड और निर्भरताएँ होनी चाहिए जबकि रनटाइम गुप्त जानकारी प्रदान करता है। इस Dockerfile को worker.py के पास रखें।
नोट: इस कॉन्फ़िगरेशन को बनाने के लिए एक स्थापित कंटेनर रनटाइम और रजिस्ट्री पहुंच की आवश्यकता होती है। छवि निर्माण और कंटेनर निष्पादन तैनाती पूर्वापेक्षाएँ बनी रहती हैं; कॉन्फ़िगरेशन एक कैप्चर की गई तैनाती परिणाम नहीं है।
dockerfile
FROM python:3.12-slim
WORKDIR /app
RUN pip install --no-cache-dir requests
COPY worker.py /app/worker.py
CMD ["python", "/app/worker.py"]
यह न्यूनतम छवि जानबूझकर निर्भरता प्रबंधन को दिखाई देती रखती है। एक रिलीज के लिए, अपने निर्माण वातावरण में निर्भरता संस्करणों को हल करें और लॉक करें, परिणामस्वरूप छवि को स्कैन करें, और उस छवि हेज़ को तैनात करें जिसे आपने अनुमोदित किया। एक Dockerfile, निर्माण तर्क, या कॉपी की गई वातावरण फ़ाइल में एपीआई कुंजी न डालें। रनटाइम गुप्त कॉन्फ़िगरेशन छवि से प्रमाण पत्र वितरण को अलग रखता है।
स्थानीय कंटेनर जांच के लिए, अपने शेल में वातावरण चर को तैयार करें और नीचे दिए गए कमांड चलाने से पहले पढ़ने योग्य output निर्देशिका बनाएँ। नाम द्वारा वातावरण चर को पारित करने से इसके मान को कमांड में लिखने से बचा जाता है।
नोट: इन कमांड के लिए डॉकर, ऊपर फ़ाइलें, और प्रामाणिक रनटाइम कॉन्फ़िगरेशन की आवश्यकता होती है। इन उदाहरणों में स्थानीय डॉकर इंजन के खिलाफ इन्हें नहीं चलाया गया है।
bash
docker build -t scrapeless-page-worker .
mkdir -p output
docker run --rm \
-e SCRAPELESS_API_KEY -e TARGET_URL -e EXPECTED_TEXT \
-v "$PWD/output:/output" \
scrapeless-page-worker
एक शून्य निकासी कोड का मतलब है कि इस कार्यकर्ता ने अपने अंतिम प्रिंट कथन पर पहुँच बनाया। पुष्टि करें कि कच्चा कैचर और मेटाडाटा फ़ाइल दोनों मौजूद हैं, पृष्ठ की सामग्री की जांच करें, और यह सुनिश्चित करें कि कॉन्फ़िगर किया गया लक्ष्य लक्षित स्रोत से मेल खाता है इससे पहले कि उदाहरण को स्वीकार किया गया माना जाए।
चरण 3: एक कार्य के रूप में तैनात करें, फिर एक कतार पेश करें
एक कार्य एक प्राकृतिक तैनाती आकृति है जो एक सीमित इनपुट को संसाधित करती है और समाप्त होती है। Kubernetes कार्य कार्यभार क्यूबेरनेट्स-आधारित प्लेटफार्मों पर इस निष्पादन पैटर्न का प्रतिनिधित्व करता है; अन्य प्रबंधित कंटेनर प्रणाली विभिन्न कॉन्फ़िगरेशन के साथ समान कार्य या कार्य अवधारणाओं को उजागर करती हैं।
एक प्लेटफॉर्म चुनें और इसकी छवि संदर्भ, कमांड, गुप्त इंजेक्शन, आउटपुट गंतव्य, और कार्य समयसीमा को कॉन्फ़िगर करें। उसी छोटे लक्ष्य सेट को स्थानीय रूप से उपयोग करें। स्वीकार किए गए रिकॉर्ड, अस्वीकृत प्रतिक्रियाएँ, और कुल सेवा उपयोग की तुलना करें इससे पहले कि कार्यकर्ता की संख्या बढ़ाई जाए।
एक कतार तब उपयोगी हो जाती है जब कार्यों को साझा कार्यक्रम की आवश्यकता होती है। एक कार्य पहचानकर्ता परिभाषित करें जो उसी निर्धारित अवलोकन को एक से अधिक बार वितरित करने पर स्थिर रहे। यदि उद्देश्य समय के साथ स्नैपशॉट एकत्र करना है तो उस पहचानकर्ता में अवलोकन अवधि शामिल करें। अन्यथा, केवल एक URL कुंजी भिन्न अवलोकनों को गलत तरीके से संकुचित कर सकती है।
रिकॉर्ड स्वीकार करने से पहले स्वीकार्यता की रिकॉर्डिंग की पुष्टि करें। डुप्लिकेट लेखन से बचने के लिए कार्य पहचानकर्ता का उपयोग करें। कंटेनर प्रतिस्थापन किसी अव्यवस्थित संग्रहण संचालन को दूसरे व्यापार रिकॉर्ड में नहीं बदलना चाहिए।
चरण 4: स्वीकार किए गए रिकॉर्ड और संसाधन लागत को मापें
कर्मचारी निगरानी को प्रक्रिया स्वास्थ्य को डेटा गुणवत्ता से अलग करना चाहिए। स्वीकार किए गए रिकॉर्ड, अस्वीकार की गई प्रतिक्रियाएँ, कतार की उम्र और सेवा के लिए प्रतीक्षा में बिताया गया समय ट्रैक करें। केवल सीपीयू उपयोग एक ऐसे एप्लिकेशन के लिएPoor scaling signal हो सकता है जो ज्यादातर नेटवर्क प्रतिक्रियाओं की प्रतीक्षा करता है।
प्रारंभिक समवर्तीता को छोटा रखें और लक्ष्य के अनुसार काम को सीमित करें। प्रति होस्ट अधिकतम तीन श्रमिकों की एक आंतरिक प्रारंभ सीमा एक रूढ़िवादी उदाहरण सेटिंग है, न कि एक सार्वभौमिक वेबसाइट अनुमति। साइट नीति और खाता सीमाएँ एक निम्न मूल्य की आवश्यकता कर सकती हैं।
कंटेनर रनटाइम लागत की तुलना वास्तविक Scrapeless उपयोग के साथ मूल्य निर्धारण पृष्ठ पर करें। श्रमिक अपटाइम से एपीआई उप consumo का अनुमान न लगाएं: एक चल रहा कंटेनर निष्क्रिय हो सकता है, जबकि एक छोटा कार्य कई बिल योग्य संचालन कर सकता है।
कच्ची प्रतिक्रियाओं की सुरक्षा उनके सामग्री के अनुसार करें। अनुरोध हेडर, कुकीज़, और कोई भी अधिकृत सत्र सामग्री सार्वजनिक पृष्ठ पाठ की तुलना में सख्त हैंडलिंग की आवश्यकता होती है। केवल निष्कर्षण कार्य के लिए आवश्यक साक्ष्य को बनाए रखें।
निष्कर्ष: संविदा लागू करें जिसे आप मान्य कर सकते हैं
एक उपयोगी CaaS स्क्रैपिंग कार्यप्रवाह में एक छोटा कार्य अनुबंध, एक कर्मचारी जो इसके आउटपुट की जांच करता है, और संग्रहण होता है जो प्रक्रिया समाप्ति से बचता है। एकल-पृष्ठ कार्यकर्ता से शुरू करें, अपने खाते के साथ इसकी प्रतिक्रिया हैंडलिंग को सत्यापित करें, और ऑर्केस्ट्रेशन जोड़ने से पहले एक कंटेनर के अंदर वही कोड चलाएं।
अगला तैनाती मील का पत्थर एक स्वीकार किया गया रिकॉर्ड है जिसका स्रोत और कैप्चर साक्ष्य है। श्रमिक गिनती उस परिणाम के बाद आती है जो पुनरुत्पादित किया जा सकता है।
क्या आप अपना वेब डेटा पाइपलाइन बनाने के लिए तैयार हैं?
Discord और Telegram में डेटा संग्रह पर काम कर रहे डेवलपर्स में शामिल हों।
Scrapeless खाता बनाएं और कार्यप्रवाह को अपने स्वीकृत डेटा स्रोतों के अनुसार अनुकूलित करें।
सामान्य प्रश्न
प्रश्न: क्या एक कंटेनर से स्क्रैप करना एक स्थानीय स्क्रिप्ट चलाने से कानूनी रूप से अलग है?
कंटेनर तैनाती लक्ष्य के लिए पहुंच अनुमतियों या डेटा-उपयोग दायित्वों को नहीं बदलती है। शामिल स्रोतों और डेटा के लिए लागू शर्तों और नियमों की समीक्षा करें।
प्रश्न: क्या CaaS प्लेटफ़ॉर्म इस श्रमिक के लिए प्रॉक्सी प्रदान करता है?
यह श्रमिक अपने लक्षित अनुरोध को वेब अनलॉकर को सौंपता है और उस अनुरोध में प्रलेखित प्रॉक्सी कॉन्फ़िगरेशन का उपयोग करता है। एक कंटेनर का अपना आउटबाउंड आईपी अपने आप एक आवासीय प्रॉक्सी नहीं होता।
प्रश्न: जब प्रतिक्रिया पहुंच-अस्वीकृत पृष्ठ होती है तो क्या होना चाहिए?
पृष्ठ को कार्य डेटा के रूप में अस्वीकार करें और एक न्यूनतम निदान रिकॉर्ड बनाए रखें। किसी अन्य संग्रहण कार्य को अधिकृत करने से पहले लक्षित दायरा और समर्थित पहुँच पथ की जांच करें।
प्रश्न: जब वेबसाइट का HTML बदलता है तो क्या बदलता है?
निष्कर्षण अनुबंध को अद्यतन करें और मान्य करें। किसी कंटेनर में कोड पैकेज करना चयनकर्ताओं या अपेक्षित सामग्री को पृष्ठ परिवर्तनों से प्रतिरक्षित नहीं करता है।
प्रश्न: कितने श्रमिक एक साथ चलने चाहिए?
एक छोटे सीमाबद्ध कार्यभार से शुरुआत करें और प्रति लक्ष्य स्वीकार की गई आउटपुट को मापें। होस्ट प्रति तीन श्रमिकों की उदाहरण की छत एक आवेदन सेटिंग है, जो लक्ष्य और खाता सीमाओं के प्रति अधिक सख्त है।
प्रश्न: क्या इस कार्यप्रवाह के लिए एक एआई एजेंट की आवश्यकता है?
नहीं। पायथन श्रमिक और कंटेनर आदेश बिना भाषा मॉडल के चलते हैं। एक एजेंट कार्य बना सकता है, लेकिन इसे श्रमिक की निर्धारक सामग्री जांचों के प्रतिस्थापन के रूप में नहीं होना चाहिए।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



