hi
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
Türkçe
한국인
Italiano
Gaeilge
اردو
Indonesia
Polski वेब क्रॉलर का उपयोग मूल्य मॉनिटरिंग, समाचार एकत्रीकरण, प्रतियोगी विश्लेषण, सर्च इंजन इंडेक्सिंग, और अन्य कार्यों के लिए किया जाता है जहाँ वेबसाइटों से संरचित डेटा एकत्र करने की आवश्यकता होती है। यह गाइड समझाता है कि शुरू से वेब क्रॉलर कैसे बनाया जाए—प्रोजेक्ट प्लानिंग और टेक्नोलॉजी चयन से शुरू होकर, वातावरण सेटअप और डेटा स्टोरेज तक। यह एक आधार प्रदान करता है जिसे आप आगे अधिक जटिल और बड़े पैमाने की परियोजनाओं तक बढ़ा सकते हैं।
यह एक प्रोग्राम है जो स्वचालित रूप से वेब पेजों पर जाता है और उनसे जानकारी एकत्र करता है। यह किसी साइट पर HTTP कॉल भेजकर, प्रत्येक पेज का HTML प्राप्त करके, और फिर आवश्यक डेटा निकालने के लिए उस HTML को प्रोसेस करके काम करता है। इसके बाद, यह आंतरिक लिंकों का अनुसरण करता है और इस प्रक्रिया को तब तक दोहराता है जब तक यह पूर्वनिर्धारित सीमाओं या स्टॉप कंडीशन्स तक नहीं पहुँच जाता। यह प्रक्रिया वेब स्क्रैपिंग के समान नहीं है। विस्तृत तुलना के लिए देखें: वेब स्क्रैपिंग बनाम वेब क्रॉलिंग.
ऐसे टूल्स का उपयोग व्यापक रूप से किया जाता है:
इन परिस्थितियों में, अपना खुद का वेब क्रॉलर बनाना अक्सर बेहतर समाधान होता है: आप प्रोग्राम को अपनी जरूरतों के अनुसार अनुकूलित कर सकते हैं, अनुरोधों की आवृत्ति नियंत्रित कर सकते हैं, और तय कर सकते हैं कि कौन-सी जानकारी कैसे एकत्र की जाए।
कोडिंग शुरू करने से पहले, अपनी परियोजना के मुख्य पैरामीटरों को परिभाषित करें ताकि सामान्य समस्याओं से बचा जा सके और स्थिर संचालन सुनिश्चित हो सके।
एक अच्छी तरह से योजनाबद्ध टूल विश्वसनीय रूप से काम करता है, संसाधनों का कुशल उपयोग करता है, और उच्च गुणवत्ता वाले परिणाम प्रदान करता है।
आप कई प्रोग्रामिंग भाषाओं में वेब क्रॉलर बना सकते हैं, जैसे Python, Java और PHP। Python अपनी सरल सिंटैक्स और HTTP अनुरोधों तथा HTML पार्सिंग के लिए समृद्ध लाइब्रेरी इकोसिस्टम (जैसे requests, BeautifulSoup, lxml) के कारण सबसे अलग है। Java बड़े पैमाने और एंटरप्राइज़ परियोजनाओं के लिए एक मजबूत विकल्प है। PHP आमतौर पर वेब विकास में अधिक उपयोग किया जाता है और स्वतंत्र क्रॉलर्स के लिए कम सुविधाजनक है।
पहली कोशिश के लिए, हम Python में वेब क्रॉलर बनाने पर ध्यान देंगे क्योंकि यह आम तौर पर सबसे उपयुक्त विकल्प होता है—यह आपको मूलभूत कार्यक्षमता को जल्दी लागू और परीक्षण करने देता है।
Python को आधिकारिक वेबसाइट से इंस्टॉल करके शुरू करें। फिर मुख्य लाइब्रेरी इंस्टॉल करें जिनका आप उपयोग करेंगे: requests HTTP अनुरोध भेजने के लिए और BeautifulSoup HTML पार्सिंग के लिए:
pip install requests beautifulsoup4
शुरुआत से ही अपने प्रोजेक्ट की संरचना को व्यवस्थित करना भी फायदेमंद होता है: मुख्य लॉजिक, कॉन्फ़िगरेशन और यूटिलिटीज़ के लिए अलग-अलग फ़ाइलें रखें। इससे भविष्य में मेंटेनेंस और स्केलिंग करना बहुत आसान हो जाता है.
एक बेसिक स्क्रिप्ट तीन मुख्य हिस्सों से बनी होती है: अनुरोध भेजना, HTML प्रोसेस करना, और लिंक्स को फॉलो करना.
from bs4 import BeautifulSoup
import time
import random
# Configuration
url = "https://quotes.toscrape.com/" # Replace this with your target site
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
}
timeout = 5 # server response timeout
max_retries = 3 # maximum number of retries on errors
# You can add your proxy here if needed
proxies = {
"http": "http://username:password@proxyserver:port",
"https": "https://username:password@proxyserver:port"
}
# Function to check access via robots.txt
def can_crawl(base_url, path="/"):
try:
robots_url = base_url.rstrip("/") + "/robots.txt"
r = requests.get(robots_url, headers=headers, timeout=timeout)
if r.status_code == 200 and f"Disallow: {path}" in r.text:
print(f"Service {path} forbidden for scraping robots.txt")
return False
except requests.RequestException:
# If robots.txt is unavailable, continue
pass
return True
# Main logic
if can_crawl(url):
for attempt in range(max_retries):
try:
response = requests.get(url, headers=headers, timeout=timeout, proxies=proxies)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'lxml')
# Collect links
links = [a['href'] for a in soup.find_all('a', href=True)] # You can change selector here
print("Found links:", links)
# Delay between requests to simulate more realistic behavior
time.sleep(random.uniform(3, 7)) # better than a fixed 5-second delay
break # if everything succeeds, exit the retry loop
except requests.RequestException as e:
print(f"Request error (attempt {attempt+1}): {e}")
wait = 2 ** attempt
print(f"Waiting {wait} seconds before retry...")
time.sleep(wait)
else:
print("The crawler cannot process this resource due to robots.txt rules")
यह स्क्रिप्ट बुनियादी वर्कफ़्लो दिखाती है: अनुरोध भेजना, HTML पार्स करना और लिंक्स एकत्र करना.
मल्टी-पेज साइटों के लिए, आपको एक लूप की आवश्यकता होती है जो सभी पेजों पर चले। उदाहरण:
for page in range(1, 6):
url = f"https://google.com/page/{page}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
# data processing
जिम्मेदार क्रॉलिंग में साइट की robots.txt फ़ाइल की जाँच करना और उसके नियमों का पालन करना शामिल है। आपको अनुरोधों के बीच देरी भी जोड़नी होती है ताकि सर्वर पर अधिक भार न पड़े। time.sleep() फ़ंक्शन के साथ, आप पेज फ़ेच के बीच रुकावटें जोड़ सकते हैं.
import time
from bs4 import BeautifulSoup
for page in range(1, 6):
url = f"https://google.com/page/{page}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
# data processing
time.sleep(5) # delay in seconds
आप एकत्र की गई जानकारी को CSV या JSON जैसे सुविधाजनक प्रारूपों में स्टोर कर सकते हैं। उदाहरण के लिए, लिंक की सूची को सहेजने के लिए:
import json
data = {"links": links}
with open("links.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
इन चरणों का पालन करके, आप एक बुनियादी वेब क्रॉलर तैयार कर लेते हैं जिसे आप आगे उन्नत कार्यों के लिए विस्तारित कर सकते हैं। आप कोड को स्केल कर सकते हैं, प्रॉक्सी सपोर्ट जोड़ सकते हैं, बड़ी संख्या में पेजों को संभाल सकते हैं, या जटिल डेटा संग्रह के लिए Scrapy जैसे अधिक शक्तिशाली फ्रेमवर्क पर जा सकते हैं.
टिप्पणियाँ: 0