ur
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