کسی ویب سائٹ سے دور ڈیٹا کی کٹائی صرف اس کے مواد کی کٹائی سے کہیں زیادہ ہے۔ اس میں بہت کچھ ہے۔ حدود ، خلیجوں اور دیگر نفیس بلاکس کو نظرانداز کرنے کے ل ، اضافی طریقوں کی ایک بڑی تعداد کو استعمال کرنا چاہئے جیسے ازگر کے ڈیٹا سکریپنگ۔
اس مضمون کے ل we ، ہم اس کی وضاحت کریں گے کہ ازگر کو کھرچنے والی چیز کیا ہے ، اور اس بات کا جواز پیش کریں گے کہ یہ اس کام کا بہترین ذریعہ کیوں ہے۔ اور یہ بھی خاکہ حکمت عملی جو ازگر کے ڈیٹا کو سکریپنگ کی صلاحیتوں کا استعمال کرتے ہیں۔ یہ سب سائٹوں کے انتہائی محفوظ مقامات سے بھی معلومات کو بازیافت کرنے میں مدد فراہم کرے گا۔
یہ ٹول خاص طور پر ویب سائٹوں سے ڈیٹا کی کٹائی کے لئے ایک بہترین وسائل کے طور پر کام کرنے کے لئے ڈیزائن کیا گیا ہے۔ اس کے استعمال کے علاوہ ، ازگر کی لائبریریوں جیسے سکریپی ، سیلینیم اور بیوٹیف سوپ نمایاں طور پر طاقتور ہیں۔ اس کے علاوہ ، ایک نئی نئی کمیونٹی موجود ہے جو اسکرپٹ تیار کرتی رہتی ہے اور نئے صارفین کو مدد فراہم کرتی ہے۔ یہی وجہ ہے کہ آج کل ازگر کو ویب سکریپنگ کے لئے استعمال کیا جاتا ہے۔ تو ، آئیے اس وقت دستیاب اہم حکمت عملیوں کو اجاگر کریں۔
یہ بلاک صارف کو دکھائے گا کہ کس طرح ازگر میں بنی زیادہ نفیس تکنیکوں کا استعمال کرتے ہوئے پیچیدہ ویب سائٹوں کو کھرچنا ہے۔ صارف سیکھے گا کہ کس طرح:
یہ نقطہ نظر سرور سے رسائی کو مسدود کرنے یا انکار کرنے کے امکانات کو کم سے کم کرنے کے دوران ازگر کے اعداد و شمار کو مؤثر بنانے میں مدد فراہم کریں گے۔
اب ، آئیے مؤثر انداز میں ازگر میں کھرچنے کا طریقہ پر حکمت عملی پر آگے بڑھیں۔
ویب سائٹوں کی کثرت سے کیپچا سیکیورٹی سسٹم کو ایک سٹرلنگ لائن آف ڈیفنس کے طور پر نافذ کرنے کے لئے ان کی معلومات کو ازالہ طور پر ازگر سے ڈیٹا کو ختم کرنے سے محفوظ رکھنے کے لئے۔ اس طرح کے سسٹم کو بہت سے ذرائع سے شکست دی جاسکتی ہے ، خودکار پہچاننے والی خدمات ، جیسے 2captcha یا اینٹی کیپچا کو ملازمت دیتے ہیں ، یا مشین لرننگ کو علمی طور پر تصاویر کی نشاندہی کرنے کے لئے استعمال کرتے ہیں۔ ایک اور امکان یہ ہے کہ سوالات کی مقدار کو اس سطح تک کم کرنا ہے کہ عدالت معلومات جمع کرنے کی توقع سے وابستہ نہیں ہے۔
سوالات کو کم دشمنی کم کرنے کے ل ، صارفین کو لازمی طور پر کام کرنا چاہئے جو عام سلوک کے قریب ہو۔ اعمال کے مابین بے ترتیب وقت متعارف کروائیں ، صارف ایجنٹ کو سوئچ کریں ، صفحہ کو سکرول کریں ، ماؤس پوائنٹر کو منتقل کریں ، تحریری نقالی کریں ، اور اس سے بھی زیادہ۔ سیلینیم یا پلے رائٹ کا استعمال ازگر سکریپنگ ٹولز کے طور پر استعمال سے آٹومیشن کو انسان جیسی زیادہ خصوصیات ملتی ہیں تاکہ بلاکس سے بچا جاسکے۔
import random
import requests
url = 'https://google.com'
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'dnt': '1',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
}
headers['user-agent'] = random.choice(user_agents)
response = requests.get(url=url, headers=headers)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
options = webdriver.ChromeOptions()
options.add_argument("--headless") # Running the browser without a graphical interface
driver = webdriver.Chrome(options=options)
driver.get("https://google.com")
# Find an element by XPath
element = driver.find_element(By.XPATH, "//button[text()=Confirm]")
# Use ActionChains to move the cursor
actions = ActionChains(driver)
actions.move_to_element(element).perform()
# Close the browser
driver.quit()
کچھ ویب سائٹیں باقاعدہ صارفین کے لئے تیار کردہ اضافی عناصر کو سرایت کرتی ہیں جو پوشیدہ ہیں ، پھر بھی ایک بوٹ غلطی سے ان کو متحرک کرسکتا ہے۔ ان عناصر میں پوشیدہ شکلیں شامل ہیں ، ان پر کلک کرنے اور جمع کروانے کے نتیجے میں سائٹ بوٹ کی رسائی کو چھوڑ کر ہوگی۔ ڈیٹا اکٹھا کرنے سے پہلے ، سی ایس ایس اسٹائل اور اوصاف جیسے ڈسپلے: کوئی نہیں یا دھندلاپن: 0 استعمال کریں اور ان شیلیوں کو شامل کرنے سے پرہیز کریں۔
اگر درخواستیں صحیح کوکیز یا سیشن کی تشکیل کے بغیر کی گئیں تو ، کچھ سائٹیں بار بار درخواستوں کو روک دیں گی جن کو بہت آسان سمجھا جاتا ہے۔ اس مسئلے کے بارے میں کام کرنے کے لئے ، درخواستوں کو استعمال کریں۔ ہیڈرز کو تبدیل کرنے والے صارف ایجنٹ کو بھی کرنے کی ضرورت ہے کیونکہ بوٹ ان کے ذریعہ پہچانا جاتا ہے۔
ایسی صورت میں جب سرور جواب دینے میں ناکام ہوجاتا ہے یا عارضی طور پر کسی غلطی کو واپس کرتا ہے تو ، کمانڈ کو دہرانے کی مزید کوششوں میں ڈالنے سے پہلے رکیں۔ کفایت شعاری بیک آف زیادہ افضل ہے - اس سے مراد ہر ناکام کوشش کے بعد انتظار کے وقت میں اضافہ ہوتا ہے۔ مثال کے طور پر ، کسی کو اس میں 1 سیکنڈ ، 2 سیکنڈ ، پھر 4 سیکنڈ ، وغیرہ میں اضافہ ہوسکتا ہے۔ اس سے ویب سائٹ کی حدود کو کم سے کم کرتے ہوئے اور ازگر کے ساتھ ڈیٹا سکریپنگ ورک بوجھ کو کم کرنے کے موقع کو مسدود کرنے کا امکان کم ہوجاتا ہے۔
import time
import requests
def fetch_with_backoff(url, max_retries=5):
retries = 0
wait_time = 1 # 1-second delay
while retries < max_retries:
try:
response = requests.get(url)
# If the request is successful, return the result
if response.status_code == 200:
return response.text
print(f"Error {response.status_code}. Retrying in {wait_time} sec.")
except requests.exceptions.RequestException as e:
print(f"Connection error: {e}. Retrying in {wait_time} sec.")
# Wait before retrying
time.sleep(wait_time)
# Increase the delay
wait_time *= 2
retries += 1
return None
url = "https://google.com"
html = fetch_with_backoff(url)
کچھ ویب سائٹیں مراحل میں مواد کو لوڈ کرسکتی ہیں ، یا وہ صرف صارف سے کچھ ان پٹ وصول کرنے پر ہی کام کرسکتی ہیں۔ اس طرح کے معاملات میں ، لائبریریوں جیسے بیوٹیف سوپ میں مدد کا امکان نہیں ہے۔ اس معاملے میں ، سیلینیم ، کٹھ پتلی ، اور ڈرامہ نگار کے ساتھ ویب سکریپنگ مدد کرے گی۔ وہ آپ کو ایسے صفحات کھولنے کے قابل بناتے ہیں جیسے عام صارف کی طرح ، اس کا مطلب ہے کہ وہ بٹنوں پر کلک کرسکتے ہیں ، متن ٹائپ کرسکتے ہیں ، اور بصورت دیگر صفحے پر موجود عناصر کے ساتھ مشغول ہوسکتے ہیں۔
کچھ ویب صفحات ہیں جو ڈیٹا کو ظاہر کرنے کے لئے جاوا اسکرپٹ کا استعمال نہیں کریں گے جب تک کہ صارف ویب پیج تک رسائی نہ کرے۔ اس کے ساتھ ، ایک معیاری HTTP درخواست تمام ضروری معلومات کو نہیں لائے گی۔ سیلینیم کو اس طرح کی معلومات اکٹھا کرنے کے لئے استعمال کیا جاسکتا ہے ، یا نیٹ ورک کی درخواستوں کو براؤزر ڈیوٹولز کا استعمال کرتے ہوئے جانچ پڑتال کی جاسکتی ہے۔ اس سے پوشیدہ API اختتامی نکات کا پتہ لگانے میں مدد ملتی ہے ، جو بعد میں کم سے کم پریشانی کے ساتھ معلومات کی بازیافت کے لئے استعمال کی جاسکتی ہے۔
ویب سائٹوں کی بھاری اکثریت مزید پروسیسنگ کے لئے خودکار درخواستوں کو سرور کو منتقل کرتی ہے۔ یہ بات مشہور ہے کہ کچھ ویب سائٹیں TLS فنگر پرنٹس کی تصدیق خودکار درخواستوں کو ممتاز کرنے کے ایک ذریعہ کے طور پر کرتی ہیں۔ اس کا مطلب ہے کہ سرور مختلف کنکشن اوصاف کا مطالعہ کرتا ہے جیسے TLS/SSL توجہ ٹکنالوجی ، سائفرز اور دیگر نفیس رابطوں کا استعمال کرتے ہوئے۔ اس کا حصول کسٹم ہیڈر اور پراکسیوں کو استعمال کرتے ہوئے درخواستوں میں کنکشن اوصاف کو ملا کر کیا جاسکتا ہے۔
import requests
url = 'username:password@your-proxy'
proxy = 'your-proxy'
proxies = {
"http": f"http://{proxy}",
"https": f"https://{proxy}",
}
response = requests.get(url=url, proxies=proxies)
اگر کوئی ویب سائٹ عوامی API کی پیش کش کرتی ہے تو ، اس کو سکریپنگ کا سہارا لینے کے بجائے استعمال کرنے کا مشورہ دیا جاتا ہے۔ یہ نقطہ نظر تیز ، زیادہ قابل اعتماد ، اور مسدود ہونے کا امکان کم ہے۔ کسی API کے اختتامی نقطہ کو تلاش کرنے کے لئے ایک اچھا نقطہ آغاز ان درخواستوں کی جانچ کر رہا ہے جو ویب سائٹ بناتا ہے ، جو ڈیوٹولز میں دکھائی دیتا ہے۔ کسی API کی عدم موجودگی میں ، آپ کو HTML کوڈ کے ساتھ کام کرنا پڑے گا۔
ویب سائٹیں اپنے کوڈ میں ترمیم کرسکتی ہیں ، جو ان کو کھرچنے میں تاخیر کرسکتی ہیں۔ بطور کاؤنٹر ، درج ذیل پر غور کریں:
کچھ معاملات میں ، ویب سائٹوں سے ازگر کے ساتھ ویب سکریپنگ ان کے استعمال کی شرائط کی خلاف ورزی کر سکتی ہے یا کچھ دائرہ اختیار میں اسے غیر قانونی بھی سمجھا جاسکتا ہے۔ اعداد و شمار کو کھرچنے سے پہلے سائٹ کی پالیسی کے ساتھ ساتھ روبوٹ ڈاٹ ٹی ایس ٹی اور سروس کی شرائط دونوں کی جانچ کرنا ضروری ہے۔ اگر کوئی دستیاب ہو تو عوامی API کا استعمال کرنا بھی بہتر ہے۔ مزید برآں ، سرور پر تناؤ کو کم سے کم کرنے کے لئے درخواست نمبروں پر حدود طے کریں۔
ازگر کے ساتھ ایڈوانسڈ ویب سکریپنگ اپنے فوائد کے ساتھ آتی ہے ، لیکن اسے صحیح طریقے سے کرنا بھی اتنا ہی اہم ہے۔ ہم نے کیپچا کو نظرانداز کرنے ، صارف کے اقدامات کی نقالی کرنے ، کوکیز اور سیشنوں کا انتظام کرنے ، ہنی پوٹس سے نمٹنے ، اور غیر متزلزل ویب ایپلی کیشنز میں ڈیٹا کی جانچ پڑتال کے سلسلے میں اس طرح کے عمل کے اہم پہلوؤں پر تبادلہ خیال کیا ہے۔
اس کے علاوہ ، اخلاقی پہلو اور استعمال شدہ سائٹ کے متعلقہ معاہدے کو بھی ذہن میں رکھیں۔ دستیاب ہونے پر API کے اختتامی مقامات کا استعمال کریں ، اور اگر HTML تجزیہ ناگزیر ہے تو ، بلاک ہونے اور قانونی پیچیدگیاں ہونے کے امکانات کو کم کرنے کے لئے تمام رہنما خطوط پر عمل کریں۔
ازگر کے ساتھ اس ویب سکریپنگ ٹیوٹوریل طریقوں کے استعمال کے ساتھ ، خطرے کی صلاحیت کو بہت کم کیا جاسکتا ہے ، جبکہ افادیت کو زیادہ سے زیادہ میں بڑھایا جاسکتا ہے۔
تبصرے: 0