ائیر بی این بی کو کھرچنے والے ڈیٹا کو ازگر کے ساتھ لسٹنگ

تبصرے: 0

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

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

ایر بینک کی ویب سائٹ کے فن تعمیر کو سمجھنا

ویب کھرچنی بنانے کا پہلا قدم یہ سمجھنا ہے کہ آپ جس ویب صفحات میں دلچسپی رکھتے ہیں اس تک رسائی حاصل کرنے کا طریقہ سمجھنا ہے ، کیونکہ ویب سائٹوں کا ڈھانچہ اکثر تبدیل ہوسکتا ہے۔ کسی سائٹ کے ڈھانچے سے اپنے آپ کو واقف کرنے کے ل you ، آپ ویب پیج کے HTML کا معائنہ کرنے کے لئے براؤزر کے ڈویلپر ٹولز کا استعمال کرسکتے ہیں۔

ڈویلپر ٹولز تک رسائی حاصل کرنے کے لئے ، ویب پیج پر دائیں کلک کریں اور "معائنہ" منتخب کریں یا شارٹ کٹ استعمال کریں:

  • CTRL+SHIFT+I ونڈوز کے لئے;
  • Option + ⌘ + I میک پر.

ہر لسٹنگ کنٹینر کو درج ذیل وصف کے ساتھ ایک DIV عنصر میں لپیٹا جاتا ہے: کلاس ="g1qv1ctd”.

1.png

"مقام" پر کلک کرکے اور "لندن ، یوکے" ٹائپ کرتے ہوئے ہم لندن میں پیش کردہ مقام تک رسائی حاصل کرسکتے ہیں۔ ویب سائٹ چیک ان اور چیک آؤٹ تاریخوں کو شامل کرنے کا مشورہ دیتی ہے۔ اس سے وہ کمروں کی قیمت کا حساب لگانے کی اجازت دیتا ہے۔

2.png

اس صفحے کے لئے یو آر ایل کچھ اس طرح نظر آئے گا:

url = "https://www.airbnb.com/s/London--United-Kingdom/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-01-01&monthly_length=3&price_filter_input_type=0&channel=EXPLORE&query=London%2C%20United%20Kingdom&place_id=ChIJdd4hrwug2EcRmSrV3Vo6llI&date_picker_type=calendar&source=structured_search_input_header&search_type=autocomplete_click"

تلاش کے صفحے سے ، ہم مصنوعات کی فہرست سازی کے اعداد و شمار کی مندرجہ ذیل صفات کو کھرچیں گے:

  • لسٹنگ یو آر ایل ؛
  • عنوان ؛
  • تفصیل ؛
  • درجہ بندی ؛
  • قیمت ؛
  • اضافی فہرست سازی کی معلومات (بستر اور دستیاب تاریخوں کی نہیں)۔

3.png

ایئربن بی سکریپنگ پروگرام بنانے کے بارے میں مرحلہ وار گائیڈ

ایر بی این بی ڈیٹا کے لئے ویب سکریپنگ شروع کرنے کے ل you ، آپ کو پہلے اپنے ترقیاتی ماحول کو ترتیب دینے کی ضرورت ہے۔ ایسا کرنے کے اقدامات یہ ہیں:

مرحلہ 1: ورچوئل ماحول پیدا کرنا

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

ونڈوز پر ورچوئل ماحول پیدا کرنا

ایڈمنسٹریٹر کے مراعات کے ساتھ کمانڈ پرامپٹ کھولیں اور "VENV" کے نام سے ایک نیا ورچوئل ماحول بنانے کے لئے مندرجہ ذیل کمانڈ چلائیں:

python -m venv venv

ورچوئل ماحول کو چالو کریں:

venv\Scripts\activate

میکوس/لینکس پر ورچوئل ماحول پیدا کرنا

ایک ٹرمینل کھولیں اور "VENV" کے نام سے ایک نیا ورچوئل ماحول بنانے کے لئے مندرجہ ذیل کمانڈ چلائیں:

sudo python3 -m venv venv

ورچوئل ماحول کو چالو کریں:

source venv/bin/activate

ورچوئل ماحول کو غیر فعال کرنے کے لئے ، صرف مندرجہ ذیل کمانڈ کو چلائیں:

deactivate

مرحلہ 2: مطلوبہ لائبریریوں کو انسٹال کرنا

اب جب کہ آپ کے پاس ورچوئل ماحول قائم ہے ، آپ ضروری لائبریریوں کو انسٹال کرسکتے ہیں۔

لائبریریوں کو سمجھنا:

  • سیلینیم: یہ طاقتور ویب سکریپنگ ٹول آپ کو ویب براؤزر کو پروگرام کے ساتھ کنٹرول کرنے کی اجازت دیتا ہے۔ اس سے آپ کو ویب صفحات کے ساتھ بات چیت کرنے کی سہولت ملتی ہے ، بشمول بٹنوں پر کلک کرنا ، فارم بھرنا ، اور صفحات کے ذریعے تشریف لے جانا گویا آپ حقیقی صارف ہیں۔
  • سیلینیم وائر: یہ لائبریری آپ کو HTTP کی درخواستوں کو روکنے اور معائنہ کرنے اور پراکسیوں کو اپنے سکریپنگ آپریشنوں کے ساتھ مربوط کرنے کی اجازت دے کر سیلینیم میں توسیع کرتی ہے۔ یہ بہت اہم ہے کیونکہ سیلینیم کو مقامی پراکسی سپورٹ نہیں ہے۔
  • بیوٹیف سوپ 4: یہ ایک لائبریری ہے جو HTML اور XML فائلوں کو پارس کرنے کے لئے تیار کی گئی ہے۔ یہ آپ کو ایک منظم اور موثر انداز میں ویب صفحات سے مخصوص معلومات نکالنے میں مدد کرتا ہے۔
  • LXML: ایک تیز اور مضبوط HTML اور XML پارسر جو خوبصورت انداز کو پورا کرتا ہے۔

اپنے چالو ورچوئل ماحول میں ، مطلوبہ لائبریریوں کو انسٹال کرنے کے لئے درج ذیل کمانڈ چلائیں:

pip install selenium beautifulsoup4 lxml seleniumwire

سیلینیم ڈرائیور

سیلینیم کو منتخب کردہ براؤزر کے ساتھ انٹرفیس کرنے کے لئے ڈرائیور کی ضرورت ہوتی ہے۔ ہم اس گائیڈ کے لئے کروم کا استعمال کریں گے۔ تاہم ، براہ کرم یقینی بنائیں کہ آپ نے اپنی پسند کے براؤزر کے لئے مناسب ویب ڈرایور انسٹال کیا ہے۔

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

مرحلہ 3: لائبریریاں درآمد کریں

آپ کی ازگر فائل کے آغاز میں ، سیلینیم وائر اور بیوٹیف سوپ لائبریریوں کو درآمد کریں۔ اس طرح آپ یہ کرتے ہیں:

from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
import csv
import random

ہم مختلف افادیتوں کے لیے random, time، اور csv لائبریریوں کو بھی درآمد کریں گے۔

مرحلہ 4: پراکسی انضمام

اگلا ، ہم ایئربن بی کے ذریعہ مسدود ہونے سے بچنے کے لئے پراکسیوں کی ایک فہرست کی وضاحت کرتے ہیں۔ جب پریمیم پراکسی کے بغیر درخواست بھیجنے کی کوشش کرتے ہو تو ، آپ کو "رسائی سے انکار" کے ردعمل کا سامنا کرنا پڑ سکتا ہے۔

4.png

آپ مندرجہ ذیل طور پر ایک پراکسی ترتیب دے سکتے ہیں:

# پراکسیوں کی فہرست
proxies = [
     "username:password@Your_proxy_IP_Address:Your_proxy_port1",
     "username:password@Your_proxy_IP_Address:Your_proxy_port2",
     "username:password@Your_proxy_IP_Address:Your_proxy_port3",
     "username:password@Your_proxy_IP_Address:Your_proxy_port4",
     "username:password@Your_proxy_IP_Address:Your_proxy_port5",

]

پراکسی فروخت کنندہ سے حاصل کردہ اصل پراکسی ایڈریس کے ساتھ "آپ_پروکسی_پ_اڈریس" اور "آپ_پروکسی_پورٹ" کو تبدیل کرنے اور اپنے اصل اسناد کے ساتھ "صارف نام" اور "پاس ورڈ" کی اقدار کو بھی تبدیل کرنے کو یقینی بنائیں۔

مرحلہ 5: گھومنے والی پراکسی

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

پراکسی گردش قائم کرنے کے لئے ، "بے ترتیب" لائبریری درآمد کریں۔ ہم اپنی فہرست میں سے ایک پراکسی منتخب کرنے کے لئے ایک فنکشن `get_proxy ()` کی بھی وضاحت کرتے ہیں۔ یہ فنکشن تصادفی طور پر بے ترتیب.کائس () طریقہ استعمال کرتے ہوئے پراکسیوں کی فہرست میں سے ایک پراکسی کا انتخاب کرتا ہے اور منتخب پراکسی کو لوٹاتا ہے۔

def get_proxy():
    return random.choice(proxies)

مرحلہ 6: ویب ڈرایور مرتب کریں

اس کے بعد، ہم `listings()` نامی مرکزی فنکشن کی وضاحت کرتے ہیں۔ یہاں ہم اپنا “ChromeDriver” سیٹ اپ کریں گے۔ یہ فنکشن Selenium کا استعمال کرتے ہوئے پراپرٹی لسٹنگ کے صفحے پر نیویگیٹ کرتا ہے، صفحے کے لوڈ ہونے کا انتظار کرتا ہے، اور پھر Beautiful Soup کا استعمال کرتے ہوئے HTML کو پارس کرتا ہے۔

def listings(url):

    proxy = get_proxy()
    proxy_options = {
        "proxy": {
            "http": f"http://{proxy}",
            "https": f"http://{proxy}",
            "no_proxy": "localhost,127.0.0.1",
        }
    }

    chrome_options = Options()
    chrome_options.add_argument("--headless")
  

    s = Service(
        "C:/Path_To_Your_WebDriver"
    )  # اپنے راستے کو کرومیڈریور سے تبدیل کریں
    driver = webdriver.Chrome(
        service=s, seleniumwire_options=proxy_options, chrome_options=chrome_options
    )

    driver.get(url)

    time.sleep(8)  # ویب سائٹ کے بوجھ کے وقت کی بنیاد پر ایڈجسٹ کریں

    soup = BeautifulSoup(driver.page_source, "lxml")

    driver.quit()

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

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

مرحلہ 7: لسٹنگ ڈیٹا کو تلاش کرنا اور ان کو نکالنا

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

لسٹنگ عناصر کو نکالنا

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

listing_elements = soup.find_all("div", class_="g1qv1ctd")
for listing_element in listing_elements:

یہ کوڈ BeautifulSoup کے find_all() میتھڈ کا استعمال کرتا ہے تاکہ ان تمام div عناصر کو تلاش کیا جا سکے جن کی کلاس “g1qv1ctd” ہے۔ یہ عناصر Airbnb کے صفحے پر انفرادی لسٹنگز کی نمائندگی کرتے ہیں۔ پھر یہ ان تمام لسٹنگ عناصر کے ذریعے لوپ کرتا ہے تاکہ متعلقہ ڈیٹا کو نکالا جا سکے۔

لسٹنگ یو آر ایل کو نکالنا

پائے جانے والے ہر لسٹنگ عنصر کے ل we ، ہم لسٹنگ کا URL نکالتے ہیں۔

URL_element = soup.find("a", class_="rfexzly")
listing_data["Listing URL"] = (
    "https://www.airbnb.com" + URL_element["href"] if URL_element else ""
)

یہاں، ہم اپنے “soup” آبجیکٹ کے اندر اس کلاس “rfexzly” کے ساتھ ایک anchor ٹیگ کی تلاش کرتے ہیں۔ اگر یہ عنصر مل جاتا ہے، تو یہ 'href' ایٹریبیوٹ (جو کہ relative URL پر مشتمل ہوتا ہے) کو نکال لیتا ہے اور مکمل لسٹنگ URL بنانے کے لیے اسے بیس URL کے ساتھ جوڑ دیتا ہے۔ اگر عنصر نہیں ملتا، تو یہ غلطیوں سے بچنے کے لیے ایک خالی سٹرنگ کو اسائن کر دیتا ہے۔

لسٹنگ کا عنوان نکالنا

پہلے ، ہم ہر لسٹنگ کے لئے یو آر ایل نکالیں گے۔ اس سے ہمیں ضرورت پڑنے پر بعد میں انفرادی لسٹنگ پیجز کا دورہ کرنے کی اجازت ہوگی۔

title_element = listing_element.find("div", class_="t1jojoys")
listing_data["Title"] = (
    title_element.get_text(strip=True) if title_element else ""
)

اس عنوان پر "div" عنصر میں شامل ہے جس میں کلاس "t1jojoys" ہے۔ ہم اس عنصر کے ٹیکسٹ مواد کو بازیافت کرتے ہیں ، کسی بھی معروف یا پیچھے والے مقامات کو ختم کرتے ہیں۔ اگر عنصر نہیں ملا تو خالی تار محفوظ ہے۔

لسٹنگ کی تفصیل نکالنا

Description_element = listing_element.find("span", class_="t6mzqp7")
listing_data["Description"] = (
    Description_element.get_text(strip=True) if Description_element else ""
)

عنوان نکالنے کی طرح ، اس کوڈ کو کلاس "T6MZQP7" کلاس کے ساتھ ایک اسپین عنصر ملتا ہے۔ اس کے بعد ہم اس عنصر کے ٹیکسٹ مواد کو نکالتے اور صاف کرتے ہیں ، جس میں لسٹنگ کی ایک مختصر وضاحت ہوتی ہے۔

لسٹنگ ریٹنگ کو نکالنا

rating_element = listing_element.find("span", class_="ru0q88m")
listing_data["Rating"] = (
    rating_element.get_text(strip=True) if rating_element else ""
)

جیسا کہ مذکورہ کوڈ میں دیکھا گیا ہے ، کلاس "RU0Q88M" کے ساتھ ایک اسپین عنصر درجہ بندی کی قیمت رکھتا ہے۔ ہم اس قدر کو نکالتے ہیں ، کسی بھی غیر ضروری وائٹ اسپیس کو چھیننے کو یقینی بناتے ہیں۔

لسٹنگ قیمت کو نکالنا

آخر میں ، ہم لسٹنگ کی قیمت نکالتے ہیں۔

price_element = listing_element.select_one("._1y74zjx")
listing_data["Price"] = (
    f"{price_element.get_text(strip=True)} per night" if price_element else ""
)

یہ کوڈ موجودہ لسٹنگ_لیمنٹ کے اندر "_1y74zjx" کلاس کے ساتھ عنصر کو تلاش کرتا ہے۔ اگر یہ عنصر ، جس میں عام طور پر قیمت کی معلومات ہوتی ہے ، مل جاتی ہے تو ، اس کے متن کا مواد نکالا جاتا ہے ، صاف کیا جاتا ہے ، اور "فی رات" کے ساتھ شامل کیا جاتا ہے تاکہ زیادہ معلوماتی قیمت کی تار تشکیل دی جاسکے۔

لسٹنگ کی اضافی معلومات نکالنا

کچھ لسٹنگ میں اضافی معلومات ہوسکتی ہیں جسے ہم نکال سکتے ہیں۔

listing_info_element = listing_element.find("span", {"aria-hidden": "true"})
listing_data["Additional Listing information"] = (
    listing_info_element.get_text(strip=True) if listing_info_element else ""
)

ہم لسٹنگ کے بارے میں کوئی اضافی معلومات تلاش کرنے کے لئے ARIA- پوشیدہ = "سچ" کے ساتھ ایک اسپین عنصر کی تلاش کرتے ہیں۔ ہر لسٹنگ عنصر سے تمام متعلقہ ڈیٹا نکالنے کے بعد ، ہم جمع کردہ ڈیٹا کو فہرست سازی کی فہرست میں شامل کرتے ہیں۔

listings.append(listing_data)

ایک بار جب تمام لسٹنگز پر کارروائی ہوجائے تو ، ہم فہرستوں کی فہرست واپس کردیتے ہیں ، ہر ایک کو ایک لغت کے طور پر پیش کیا جاتا ہے جس میں نکالا ہوا ڈیٹا ہوتا ہے۔

return listings

مرحلہ 8: CSV فائل میں ڈیٹا لکھنا

ایئربن بی کے لسٹنگ پیجز سے ڈیٹا کو کامیابی کے ساتھ ختم کرنے کے بعد ، اگلا اہم مرحلہ مستقبل کے تجزیے اور حوالہ کے ل this اس قیمتی معلومات کو اسٹور کرنا ہے۔ ہم اس کام کے لئے CSV لائبریری کا استعمال کرتے ہیں۔ ہم لکھنے کے موڈ میں ایک CSV فائل کھولتے ہیں اور CSV.dict رائٹر آبجیکٹ تیار کرتے ہیں۔ اس کے بعد ہم ہیڈر اور ڈیٹا کو فائل میں لکھتے ہیں۔

airbnb_listings = listings(url)

csv_file_path = "proxy_web_listings_output.csv"

with open(csv_file_path, "w", encoding="utf-8", newline="") as csv_file:
    fieldnames = [
        "Listing URL",
        "Title",
        "Description",
        "Rating",
        "Price",
        "Additional Listing information",
    ]
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    writer.writeheader()
    for listing in airbnb_listings:
        writer.writerow(listing)

print(f"Data has been exported to {csv_file_path}")

یہاں ایک مکمل کوڈ ہے جو ہم نے اس ٹیوٹوریل کے لئے استعمال کیا ہے:

from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
import csv
import random

# پراکسیوں کی فہرست
proxies = [ 
 "username:password@Your_proxy_IP_Address:Your_proxy_port1",
 "username:password@Your_proxy_IP_Address:Your_proxy_port2",
 "username:password@Your_proxy_IP_Address:Your_proxy_port3",
 "username:password@Your_proxy_IP_Address:Your_proxy_port4",
 "username:password@Your_proxy_IP_Address:Your_proxy_port5",
]

def get_proxy():
    return random.choice(proxies)


def listings(url):

    proxy = get_proxy()
    proxy_options = {
        "proxy": {
            "http": f"http://{proxy}",
            "https": f"http://{proxy}",
            "no_proxy": "localhost,127.0.0.1",
        }
    }

    chrome_options = Options()
    chrome_options.add_argument("--headless")
  

    s = Service(
        "C:/Path_To_Your_WebDriver"
    )  # اپنے راستے کو کرومیڈریور سے تبدیل کریں
    driver = webdriver.Chrome(
        service=s, seleniumwire_options=proxy_options, chrome_options=chrome_options
    )

    driver.get(url)

    time.sleep(8)  # ویب سائٹ کے بوجھ کے وقت کی بنیاد پر ایڈجسٹ کریں

    soup = BeautifulSoup(driver.page_source, "lxml")

    driver.quit()

    listings = []

    # صفحہ پر لسٹنگ کے تمام عناصر تلاش کریں
    listing_elements = soup.find_all("div", class_="g1qv1ctd")

    for listing_element in listing_elements:
        # ہر لسٹنگ عنصر سے ڈیٹا نکالیں
        listing_data = {}

        # یو آر ایل کی فہرست
        URL_element = soup.find("a", class_="rfexzly")
        listing_data["Listing URL"] = (
            "https://www.airbnb.com" + URL_element["href"] if URL_element else ""
        )

        # عنوان
        title_element = listing_element.find("div", class_="t1jojoys")
        listing_data["Title"] = (
            title_element.get_text(strip=True) if title_element else ""
        )

        # تفصیل
        Description_element = listing_element.find("span", class_="t6mzqp7")
        listing_data["Description"] = (
            Description_element.get_text(strip=True) if Description_element else ""
        )

        # درجہ بندی
        rating_element = listing_element.find("span", class_="ru0q88m")
        listing_data["Rating"] = (
            rating_element.get_text(strip=True) if rating_element else ""
        )

        # قیمت
        price_element = listing_element.select_one("._1y74zjx")
        listing_data["Price"] = (
            f"{price_element.get_text(strip=True)} per night" if price_element else ""
        )

        # اضافی لسٹنگ کی معلومات
        listing_info_element = listing_element.find("span", {"aria-hidden": "true"})
        listing_data["Additional Listing information"] = (
            listing_info_element.get_text(strip=True) if listing_info_element else ""
        )

        # فہرست میں لسٹنگ ڈیٹا کو شامل کریں
        listings.append(listing_data)

    return listings


url = "https://www.airbnb.com/s/London--United-Kingdom/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-01-01&monthly_length=3&price_filter_input_type=0&channel=EXPLORE&query=London%2C%20United%20Kingdom&place_id=ChIJdd4hrwug2EcRmSrV3Vo6llI&date_picker_type=calendar&source=structured_search_input_header&search_type=autocomplete_click"


airbnb_listings = listings(url)

csv_file_path = "proxy_web_listings_output.csv"

with open(csv_file_path, "w", encoding="utf-8", newline="") as csv_file:
    fieldnames = [
        "Listing URL",
        "Title",
        "Description",
        "Rating",
        "Price",
        "Additional Listing information",
    ]
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    writer.writeheader()
    for listing in airbnb_listings:
        writer.writerow(listing)

print(f"Data has been exported to {csv_file_path}")

کوڈ کا یہ حصہ اس بات کو یقینی بناتا ہے کہ سکریپڈ ڈیٹا "پراکسی_ویب_ لسٹنگز_ آؤٹ پٹ سی سی ایس وی" نامی سی ایس وی فائل میں محفوظ ہے۔

نتائج

ہمارے کھرچنے کے نتائج کو سی ایس وی فائل میں محفوظ کیا گیا ہے جسے "پراکسی_ویب_ لسٹنگز_ آؤٹ پٹ سی ایس وی" کہتے ہیں جیسا کہ ذیل میں دیکھا گیا ہے۔

5.jpg

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

تبصرے:

0 تبصرے