scrape hotel listings

ہوٹل کی فہرستیں اسکریپ کرنا دراصل بڑے پیمانے اور جغرافیائی فرق کو درست طریقے سے سنبھالنے کا کام ہے۔ Booking اور Expedia جیسی آن لائن ٹریول ایجنسیاں (OTAs) آنے والے صارف کے ملک، کرنسی، ڈیوائس اور سیشن کے حساب سے مختلف نرخ دکھاتی ہیں، اس لیے ایک سادہ اسکریپر ایسا ڈیٹا واپس کر سکتا ہے جو باہم میل نہ کھائے یا بالکل غلط ہو۔

یہ مضمون عملی طریقہ کار بیان کرتا ہے: کن استعمالات کے لیے یہ محنت فائدہ مند ہے، جغرافیائی ہدف بندی والی پراکسیز اور مستحکم (sticky) سیشنز کیوں ضروری ہیں، نازک HTML کے بجائے JSON اینڈ پوائنٹس کیسے پڑھے جائیں، اور تاریخوں کی حد اور قیام کے پیرامیٹرز درخواستوں کی تعداد اور بینڈوتھ کو کس طرح تیزی سے بڑھا دیتے ہیں۔ دو مختصر Python مثالیں درخواست بھیجنے اور ڈیٹا نکالنے کا نمونہ دکھاتی ہیں۔

DataImpulse ایک اخلاقی پراکسی فراہم کنندہ ہے جو 195 ممالک میں 9 کروڑ سے زیادہ رہائشی، موبائل اور ڈیٹا سینٹر IP ایڈریسز فراہم کرتا ہے۔ اس کا ادائیگی بمطابق استعمال ماڈل 1 ڈالر فی GB سے شروع ہوتا ہے، ٹریفک کبھی ختم نہیں ہوتی، اور اسے ویب اسکریپنگ، اشتہارات کی تصدیق، قیمتوں کی نگرانی، مارکیٹ ریسرچ اور متعدد اکاؤنٹس کے انتظام کے لیے استعمال کیا جاتا ہے۔

اہم حقائق

  • جغرافیہ اہم ہے: ہوٹلوں کی قیمتیں اور دستیابی ملک اور کرنسی کے حساب سے بدلتی ہیں، اس لیے ہوٹل کی فہرستیں درست طریقے سے اسکریپ کرنے کے لیے ہر اہم مارکیٹ سے مطابقت رکھنے والی ملک وار ہدف بندی کی رہائشی پراکسیز درکار ہوتی ہیں۔
  • بہترین پراکسی قسم: گھومنے والی (rotating) رہائشی پراکسیز، جو حقیقی صارفین کے IPs استعمال کرتی ہیں اور شناختی رکاوٹوں سے بچنے میں مدد دیتی ہیں۔
  • قیمت: 1 ڈالر فی GB سے شروع، ادائیگی بمطابق استعمال، ٹریفک کبھی ختم نہیں ہوتی اور کوئی سبسکرپشن درکار نہیں۔
  • کوریج: 195 ممالک میں 9 کروڑ سے زائد اخلاقی طور پر حاصل کردہ IPs۔
  • قابلِ اعتماد: 99.51% کامیابی کی شرح، G2 پر 5 میں سے 4.8 درجہ بندی۔
  • پروٹوکولز اور ٹارگٹنگ: HTTP، HTTPS اور SOCKS5، ملک وار ہدف بندی سمیت۔
مختلف OTAs میں ہوٹل کی قیمتوں کی نگرانی

ہوٹل کی فہرستیں آخر کیوں اسکریپ کی جائیں؟

ہوٹل لسٹنگ کا ڈیٹا سفری صنعت میں قیمتوں کی انٹیلیجنس، مارکیٹ ریسرچ اور ریٹ پیرٹی کی نگرانی کی بنیاد بنتا ہے۔ ٹیمیں اسے ایسے سوالات کے جواب کے لیے جمع کرتی ہیں جن کا جواب جامد رپورٹیں نہیں دے سکتیں۔

  • نرخ پیرٹی کی نگرانی: ہوٹل اور چینز دیکھتے ہیں کہ آیا OTAs طے شدہ نرخوں کی پابندی کر رہی ہیں یا براہ راست بکنگ چینل کو نقصان پہنچا رہی ہیں۔
  • حریفوں کی قیمتیں: ریوینیو مینیجرز دیکھتے ہیں کہ قریبی پراپرٹیز انہی تاریخوں اور کمروں کی اقسام کے لیے کیا قیمت رکھ رہی ہیں، پھر اپنے نرخ ایڈجسٹ کرتے ہیں۔
  • مارکیٹ ریسرچ: تجزیہ کار قبضے کی شرح کے اشاروں، موسمی رجحانات، سہولیات کے بدلتے رجحانات اور کسی منزل میں شامل ہونے والی نئی سپلائی کا مطالعہ کرتے ہیں۔

ہر صورت میں اصل قدر اسی وقت ملتی ہے جب قیمتیں بالکل اسی طرح جمع کی جائیں جیسے کسی مخصوص مارکیٹ کا حقیقی مسافر انہیں دیکھتا ہے۔ یہی وہ مقام ہے جہاں انفراسٹرکچر کے فیصلے اہم ہو جاتے ہیں۔

جغرافیائی ہدف بندی ہوٹل کی قیمتیں کیوں بدل دیتی ہے؟

OTAs متحرک قیمتوں کا نظام استعمال کرتی ہیں، اس لیے ایک ہی کمرے اور تاریخ کا نرخ صارف کے ملک، کرنسی، بلکہ ڈیوائس یا سیشن کے حساب سے بھی بدل سکتا ہے۔ جرمنی سے آنے والی درخواست یورو میں قیمتیں اور خطے کی مخصوص پیشکشیں دکھا سکتی ہے جو امریکہ سے آنے والی درخواست میں نظر نہیں آتیں۔

درست ڈیٹا کے لیے آپ کو اسی مارکیٹ کا IP درکار ہوتا ہے جس کا آپ مطالعہ کر رہے ہیں۔ ملک وار ہدف بندی آپ کو ہر کرنسی اور آفر سیٹ کے لیے مقامی صارف کی طرح ظاہر ہونے دیتی ہے۔ رہائشی پراکسیز یہاں عام انتخاب ہیں کیونکہ ان کے ایڈریس حقیقی صارفین کے کنکشنز سے آتے ہیں، اس لیے OTAs انہیں خودکار ٹریفک کے بجائے عام مسافر سمجھتی ہیں۔ ڈیٹا سینٹر پراکسیز تیز اور سستی ہوتی ہیں، لیکن مضبوط اینٹی بوٹ نظام انہیں آسانی سے شناخت کر لیتے ہیں، اس لیے یہ محفوظ OTA صفحات کے بجائے کم حساس اہداف یا ابتدائی جانچ کے لیے بہتر ہیں۔

مستحکم (sticky) سیشنز کئی صفحات والے فلو میں کیسے مدد دیتے ہیں؟

مستحکم (sticky) سیشنز درخواستوں کی ایک پوری ترتیب کے لیے ایک ہی IP ایڈریس برقرار رکھتے ہیں۔ یہ اس لیے اہم ہے کہ بکنگ جیسے فلو صفحات کے درمیان اسٹیٹ لے کر چلتے ہیں۔ سرچ نتائج کا صفحہ، کمرے کی تفصیل کا صفحہ اور نرخ کی تصدیق کا مرحلہ اکثر کوکیز اور سرور سائیڈ سیشن ٹوکنز شیئر کرتے ہیں جو اصل IP سے جڑے ہوتے ہیں۔

اگر فلو کے دوران آپ کا IP بدل جائے تو سائٹ سیشن ری سیٹ کر سکتی ہے، مختلف کرنسی دکھا سکتی ہے یا کوئی چیلنج شروع کر سکتی ہے۔ ہر منطقی تلاش (ایک پراپرٹی، ایک تاریخ کی حد اور قیام) کے لیے ایک مستحکم سیشن مقرر کریں، مطلوبہ صفحات مکمل کریں، پھر اسے ختم کر دیں۔ وسیع، ایک صفحے کی جمع آوری کے لیے گھومنے والے سیشنز استعمال کریں، مثلا ہر درخواست میں ایک لسٹنگ کارڈ لینا، اور کئی مرحلوں والے چیک آؤٹ جیسے راستوں کے لیے مستحکم سیشنز رکھیں۔ DataImpulse ایک ہی پول پر گھومنے والے اور مستحکم دونوں سیشنز کی سہولت دیتا ہے۔

کیا HTML اسکریپ کریں یا JSON اینڈ پوائنٹس؟

جہاں دستیاب ہوں، اصل JSON اینڈ پوائنٹس کو ترجیح دیں۔ زیادہ تر جدید OTAs قیمتیں پس منظر کی XHR یا fetch کالز کے ذریعے لوڈ کرتی ہیں جو صاف JSON واپس کرتی ہیں، جبکہ نظر آنے والا HTML بعد میں JavaScript سے رینڈر ہوتا ہے اور اس کا لے آؤٹ اکثر بدلتا رہتا ہے۔

اپنے براؤزر کے ڈیولپر ٹولز کھولیں، تلاش کے دوران Network ٹیب دیکھیں، اور ایسی XHR درخواستیں تلاش کریں جو دستیابی اور نرخ کا ڈیٹا واپس کرتی ہیں۔ ان اینڈ پوائنٹس کو براہ راست دہرانا تیز ہے، بینڈوتھ کم لیتا ہے، اور HTML سے لسٹنگ کارڈز پارس کرنے کے مقابلے میں کہیں کم نازک ہے۔ جب صرف HTML دستیاب ہو تو ظاہری کلاس ناموں کے بجائے مستحکم attributes کو نشانہ بنائیں۔ آپ جو بھی راستہ اختیار کریں، بلاک ہوئے بغیر اسکریپنگ کی اس گائیڈ کی عمومی دفاعی تکنیکیں بدستور لاگو رہتی ہیں، اور اگر آپ کسی ایک OTA پر مرکوز ہیں تو Booking.com اسکریپ کرنے کے بارے میں ہماری تفصیلی رہنمائی ایک ہی سائٹ کو مزید گہرائی سے دیکھتی ہے۔

درخواستوں اور بینڈوتھ کی منصوبہ بندی کیسے کی جائے؟

شروع کرنے سے پہلے درخواستوں کی تعداد کا اندازہ لگا لیں، کیونکہ تاریخوں کی حد اور قیام کے پیرامیٹرز تیزی سے کئی گنا بڑھ جاتے ہیں۔ ہر پراپرٹی، چیک اِن تاریخ، قیام کی مدت اور مہمانوں کی ترتیب ایک الگ کوئری ہے، اس لیے معمولی سا سرچ گرڈ بھی لاکھوں درخواستوں تک پہنچ سکتا ہے۔

مثال کے طور پر، 500 ہوٹل ضرب 90 چیک اِن تاریخیں ضرب 3 قیام کی مدتیں ضرب 2 مہمانوں کے اختیارات، ایک ہی مرحلے میں 270,000 درخواستیں بنا دیتے ہیں۔ چونکہ پراکسی پلانز ٹریفک کو گیگابائٹ کے حساب سے ناپتے ہیں، اس لیے ہر جواب کو مختصر رکھیں: مکمل HTML صفحات کے بجائے JSON اینڈ پوائنٹس تک رسائی کریں، صرف ضروری فیلڈز مانگیں، اور تصاویر یا نقشے کی ٹائلز ڈاؤن لوڈ کرنے سے بچیں۔ نیچے دیا گیا Python سنیپٹ دکھاتا ہے کہ تاریخوں کا گرڈ کیسے بنایا جائے تاکہ چلانے سے پہلے کام کے حجم کا اندازہ ہو سکے۔

import requests
from datetime import date, timedelta

proxies = {
    "http": "http://USER:[email protected]:823",
    "https": "http://USER:[email protected]:823",
}

start = date(2026, 8, 1)
dates = [start + timedelta(days=i) for i in range(90)]
stays = [1, 3, 7]

for check_in in dates:
    for nights in stays:
        params = {
            "hotel_id": 123456,
            "checkin": check_in.isoformat(),
            "checkout": (check_in + timedelta(days=nights)).isoformat(),
            "adults": 2,
            "currency": "EUR",
        }
        r = requests.get(
            "https://example-ota.com/api/availability",
            params=params,
            proxies=proxies,
            timeout=20,
        )
        # store r.json() keyed by hotel_id, checkin, nights

ہوٹل لسٹنگ کارڈز کیسے پارس کیے جائیں؟

جب HTML پڑھنا ضروری ہو تو ہر لسٹنگ کارڈ کے لیے ایک مستحکم کنٹینر تلاش کریں اور اس کے اندر سے نام، قیمت اور درجہ بندی نکالیں۔ کارڈ بہ کارڈ کام کریں تاکہ کسی ایک فیلڈ میں تبدیلی پوری کارروائی کو نہ توڑ دے۔

نیچے دی گئی مثال نتائج کے کارڈز پر چلنے کے لیے BeautifulSoup استعمال کرتی ہے۔ سلیکٹرز کو اپنے ہدف کے مطابق ڈھالیں اور ہمیشہ غائب فیلڈز کے لیے حفاظتی چیک رکھیں، کیونکہ فروخت شدہ کمرے اور پروموشنل لے آؤٹس میں اکثر قیمت یا درجہ بندی موجود نہیں ہوتی۔

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")
listings = []

for card in soup.select("div[data-testid='property-card']"):
    name = card.select_one("h3")
    price = card.select_one("span[data-testid='price']")
    rating = card.select_one("div[data-testid='rating']")
    listings.append({
        "name": name.get_text(strip=True) if name else None,
        "price": price.get_text(strip=True) if price else None,
        "rating": rating.get_text(strip=True) if rating else None,
    })

print(len(listings), "cards parsed")

OTA کے اینٹی بوٹ دفاعات سے کیسے نمٹا جائے؟

یہ فرض کر کے چلیں کہ OTAs کا اینٹی بوٹ تحفظ مضبوط ہے، اور اس سے براہ راست ٹکرانے کے بجائے اپنے نظام کو اسی حقیقت کے مطابق ڈیزائن کریں۔ بڑی سفری سائٹس فنگر پرنٹنگ، ریٹ لمٹنگ، رویے کی جانچ اور IP ساکھ کی اسکورنگ استعمال کرتی ہیں، اس لیے چند محدود ایڈریسز سے جارحانہ اسکریپنگ جلد پکڑی جاتی ہے۔

  • درخواستوں کو بڑے رہائشی پول میں پھیلائیں تاکہ کسی ایک IP سے غیر فطری رفتار سے درخواستیں نہ جائیں۔
  • رفتار کو انسانی استعمال جیسا رکھیں اور مقررہ وقفے کے بجائے درخواستوں کے درمیان jitter شامل کریں۔
  • کرنسی، زبان اور Accept ہیڈرز کو ایگزٹ (exit) IP کے ملک سے ہم آہنگ کریں۔
  • سب سے زیادہ محفوظ صفحات کے لیے موبائل پراکسیز پر غور کریں، کیونکہ کیریئر گریڈ NAT ایڈریسز بہت سے حقیقی صارفین کے درمیان مشترک ہوتے ہیں اور انہیں مکمل طور پر بلاک کرنا مشکل ہوتا ہے۔

DataImpulse اپنے IPs اخلاقی طور پر ایسے صارفین سے حاصل کرتا ہے جو رضامندی دیتے ہیں اور معاوضہ پاتے ہیں۔ اس سے پول GDPR کی توقعات کے مطابق رہتا ہے اور ساتھ ہی آپ کو وہ جغرافیائی وسعت ملتی ہے جو قابل اعتماد ہوٹل ڈیٹا جمع کرنے کے لیے ضروری ہے۔

سفری سائٹس کے لیے پراکسی کی اقسام

پراکسی کی قسم کس کے لیے بہترین نوٹ
رہائشی گھومنے والا بڑے پیمانے پر قیمتوں کی اسکریپنگ ہر درخواست کے لیے نیا IP
رہائشی مستحکم (sticky) کئی مرحلوں والے بکنگ فلو سیشن برقرار رکھتا ہے
موبائل مشکل رسائی والی سائٹس زیادہ بھروسہ مند، مگر مہنگا
ڈیٹا سینٹر تیز بلک کوئریز بلاک ہونے کا امکان زیادہ
کون سی پراکسیز ہوٹل ڈیٹا جمع کرنے کے لیے موزوں ہیں

اکثر پوچھے جانے والے سوالات

کیا ہوٹل کی فہرستیں اسکریپ کرنا قانونی ہے؟

عوامی طور پر دستیاب لسٹنگ ڈیٹا اسکریپ کرنا بہت سے دائرہ اختیار میں عموما جائز سمجھا جاتا ہے، لیکن سائٹ کی سروس کی شرائط، مقامی قوانین، اور ذاتی یا کاپی رائٹ ڈیٹا سے متعلق قواعد پھر بھی لاگو رہتے ہیں۔ بڑے پیمانے پر ڈیٹا جمع کرنے سے پہلے ہدف سائٹ کی شرائط دیکھیں اور قانونی مشیر سے رجوع کریں۔

ہوٹل کی قیمتیں اسکریپ کرنے کے لیے کون سی پراکسی قسم بہترین ہے؟

ملک وار ہدف بندی والی رہائشی پراکسیز عام انتخاب ہیں کیونکہ OTA قیمتیں مارکیٹ کے حساب سے بدلتی ہیں اور رہائشی IPs حقیقی مقامی مسافروں جیسے نظر آتے ہیں۔ موبائل پراکسیز سب سے زیادہ محفوظ صفحات پر مدد دیتی ہیں، جبکہ ڈیٹا سینٹر پراکسیز کم حساس یا ابتدائی مرحلے کی جمع آوری کے لیے موزوں ہیں۔

مجھے ویب سائٹ پر دکھائی گئی قیمتوں سے مختلف قیمتیں کیوں ملتی ہیں؟

ہوٹل کی قیمتیں صارف کے ملک، کرنسی، سیشن اور کبھی کبھی ڈیوائس پر منحصر ہوتی ہیں، اس لیے ایسا IP یا کرنسی جو آپ کی زیر مطالعہ مارکیٹ سے میل نہ کھائے، مختلف نتائج دے سکتی ہے۔ ایگزٹ (exit) IP کے ملک اور کرنسی کو ہدف مارکیٹ سے ہم آہنگ کریں۔

ہوٹل اسکریپنگ کتنی بینڈوتھ استعمال کرتی ہے؟

یہ درخواستوں کی تعداد پر منحصر ہے، جو تاریخوں اور قیام کے گرڈز کے ساتھ تیزی سے بڑھتی ہے۔ JSON اینڈ پوائنٹس تک رسائی اور صرف مطلوبہ فیلڈز مانگنے سے ہر جواب مختصر رہتا ہے، اس لیے کوئی بڑی کارروائی شروع کرنے سے پہلے اپنے گرڈ کے حجم اور فی جواب وزن کا اندازہ لگا لیں۔

کیا مجھے HTML صفحہ اسکریپ کرنا چاہیے یا API اینڈ پوائنٹ؟

ان JSON اینڈ پوائنٹس کو ترجیح دیں جنہیں OTAs پس منظر میں کال کرتی ہیں، کیونکہ یہ JavaScript سے رینڈر ہونے والے HTML کے مقابلے میں ہلکے، تیز اور زیادہ مستحکم ہوتے ہیں۔ لسٹنگ کارڈز پارس کرنے کی طرف صرف اسی وقت جائیں جب کوئی موزوں اینڈ پوائنٹ دستیاب نہ ہو۔

DataImpulse کب درست انتخاب نہیں ہوتا؟

اگر آپ کو مستحکم (static) ISP پراکسیز، مکمل طور پر منظم اسکریپنگ API، یا بینکنگ اور حکومتی سائٹس تک رسائی چاہیے تو DataImpulse مناسب ٹول نہیں ہے۔ یہ عوامی ڈیٹا جمع کرنے اور مواد تک رسائی کے لیے گھومنے والی رہائشی، موبائل اور ڈیٹا سینٹر پراکسیز پر مرکوز ہے۔

درست ہوٹل ڈیٹا جمع کرنا شروع کریں

اگر آپ کو OTAs اور ہوٹل سائٹس سے ملک وار درست نرخ درکار ہیں، تو DataImpulse 195 ممالک میں اخلاقی طور پر حاصل کردہ رہائشی، موبائل اور ڈیٹا سینٹر IPs، گھومنے والے اور مستحکم سیشنز کے ساتھ 1 ڈالر فی GB سے فراہم کرتا ہے۔ اکاؤنٹ بنائیں اور آج ہی اپنا پہلا ہوٹل لسٹنگ جاب چلائیں۔


Share article: