पायथन के साथ ज़िलो रियल एस्टेट डेटा को स्क्रैप करने के लिए गाइड

टिप्पणियाँ: 0

Zillow से वास्तविक संपत्ति की जानकारी निकालने से बाजार और निवेश के लिए सही विश्लेषण हो सकता है। इस पोस्ट का उद्देश्य पायथन के साथ ज़िलो प्रॉपर्टी लिस्टिंग को स्क्रैप करने पर चर्चा करना है, जहां यह आवश्यक कदमों और दिशानिर्देशों पर प्रमुख होगा। यह गाइड आपको दिखाएगा कि कैसे अनुरोधों और LXML जैसे पुस्तकालयों का उपयोग करके Zillow वेबसाइट से जानकारी को परिमार्जन किया जाए।

आवश्यक पुस्तकालयों को स्थापित करना और स्क्रैपिंग शुरू करना

इससे पहले कि हम शुरू करें, सुनिश्चित करें कि आप अपने सिस्टम पर पायथन स्थापित हैं। आपको निम्नलिखित पुस्तकालयों को भी स्थापित करना होगा:

pip install requests
pip install lxml

चरण 1। Zillow की HTML संरचना को समझना

Zillow से डेटा निकालने के लिए, आपको वेबपेज की संरचना को समझने की आवश्यकता है। Zillow पर एक संपत्ति लिस्टिंग पृष्ठ खोलें और उन तत्वों का निरीक्षण करें जिन्हें आप स्क्रैप करना चाहते हैं (जैसे, संपत्ति का शीर्षक, किराया अनुमान मूल्य, और मूल्यांकन मूल्य)।

शीर्षक:

1.png

मूल्य विवरण:

2.png

चरण 2। HTTP अनुरोध करना

अब चलिए HTTP अनुरोध भेजें। सबसे पहले, हमें Zillow पृष्ठ की HTML सामग्री लाने की आवश्यकता है। हम लक्ष्य URL को HTTP GET अनुरोध भेजने के लिए अनुरोध लाइब्रेरी का उपयोग करेंगे। हम एक वास्तविक ब्राउज़र अनुरोध की नकल करने के लिए अनुरोध हेडर भी सेट करेंगे और आईपी अवरुद्ध से बचने के लिए प्रॉक्सी का उपयोग करेंगे।

import requests

# Zillow संपत्ति लिस्टिंग के लिए लक्ष्य URL को परिभाषित करें
url = "https://www.zillow.com/homedetails/1234-Main-St-Some-City-CA-90210/12345678_zpid/"

# एक ब्राउज़र अनुरोध की नकल करने के लिए अनुरोध हेडर सेट करें
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-US,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
    'sec-ch-ua-mobile': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}

# वैकल्पिक रूप से, आईपी ब्लॉकिंग से बचने के लिए प्रॉक्सी सेट करें
proxies = {
    'http': 'http://username:password@your_proxy_address',
    'https://username:password@your_proxy_address',
}


# HTTP GET अनुरोध हेडर और प्रॉक्सी के साथ भेजें
response = requests.get(url, headers=headers, proxies=proxies)
response.raise_for_status()  # Ensure we got a valid response

चरण 3। पार्सिंग HTML सामग्री

अगला, हमें LXML का उपयोग करके HTML सामग्री को पार्स करने की आवश्यकता है। हम एक तत्व ऑब्जेक्ट में वेबपेज की HTML सामग्री को पार्स करने के लिए LXML.HTML मॉड्यूल से FromString फ़ंक्शन का उपयोग करेंगे।

from lxml.html import fromstring

# LXML का उपयोग करके HTML सामग्री को पार्स करें
parser = fromstring(response.text)

चरण 4। डेटा निष्कर्षण

अब, हम विशिष्ट डेटा पॉइंट्स जैसे कि प्रॉपर्टी टाइटल, रेंट एस्टिमेंट प्राइस, और असेसमेंट प्राइस को एक्सपैथ HTML कंटेंट पर XPATH क्वेरी का उपयोग करके निकालेंगे।

# XPATH का उपयोग करके संपत्ति का शीर्षक निकालना
title = ' '.join(parser.xpath('//h1[@class="Text-c11n-8-99-3__sc-aiai24-0 dFxMdJ"]/text()'))

# XPATH का उपयोग करके संपत्ति किराए का अनुमान मूल्य निकालना
rent_estimate_price = parser.xpath('//span[@class="Text-c11n-8-99-3__sc-aiai24-0 dFhjAe"]//text()')[-2]

# XPATH का उपयोग करके संपत्ति मूल्यांकन मूल्य निकालना
assessment_price = parser.xpath('//span[@class="Text-c11n-8-99-3__sc-aiai24-0 dFhjAe"]//text()')[-1]

# निकाले गए डेटा को एक शब्दकोश में स्टोर करें
property_data = {
    'title': title,
    'Rent estimate price': rent_estimate_price,
    'Assessment price': assessment_price
}

चरण 5। JSON को डेटा सहेजना

अंत में, हम आगे की प्रक्रिया के लिए JSON फ़ाइल में निकाले गए डेटा को सहेजेंगे।

import json

# आउटपुट JSON फ़ाइल नाम को परिभाषित करें
output_file = 'zillow_properties.json'

# राइट मोड में फ़ाइल खोलें और डेटा डंप करें
with open(output_file, 'w') as f:
    json.dump(all_properties, f, indent=4)

print(f"Scraped data saved to {output_file}")

कई URL को संभालना

कई संपत्ति लिस्टिंग को खुरचने के लिए, हम URL की एक सूची में पुनरावृत्ति करेंगे और प्रत्येक के लिए डेटा निष्कर्षण प्रक्रिया को दोहराएंगे।

# खुरचने के लिए URL की सूची
urls = [
    "https://www.zillow.com/homedetails/1234-Main-St-Some-City-CA-90210/12345678_zpid/",
    "https://www.zillow.com/homedetails/5678-Another-St-Some-City-CA-90210/87654321_zpid/"
]

# सभी गुणों के लिए डेटा संग्रहीत करने के लिए सूची
all_properties = []

for url in urls:
    # HTTP GET अनुरोध हेडर और प्रॉक्सी के साथ भेजें
    response = requests.get(url, headers=headers, proxies=proxies)
    response.raise_for_status()  # Ensure we got a valid response

    # LXML का उपयोग करके HTML सामग्री को पार्स करें
    parser = fromstring(response.text)

    # XPath का उपयोग करके डेटा निकालें
    title = ' '.join(parser.xpath('//h1[@class="Text-c11n-8-99-3__sc-aiai24-0 dFxMdJ"]/text()'))
    rent_estimate_price = parser.xpath('//span[@class="Text-c11n-8-99-3__sc-aiai24-0 dFhjAe"]//text()')[-2]
    assessment_price = parser.xpath('//span[@class="Text-c11n-8-99-3__sc-aiai24-0 dFhjAe"]//text()')[-1]

    # निकाले गए डेटा को एक शब्दकोश में स्टोर करें
    property_data = {
        'title': title,
        'Rent estimate price': rent_estimate_price,
        'Assessment price': assessment_price
    }

    # प्रॉपर्टी डेटा को सूची में जोड़ें
    all_properties.append(property_data)

पूर्ण कोड

यहाँ Zillow प्रॉपर्टी डेटा को स्क्रैप करने और इसे JSON फ़ाइल में सहेजने के लिए पूरा कोड है:

import requests
from lxml.html import fromstring
import json

# Zillow संपत्ति लिस्टिंग के लिए लक्ष्य URL को परिभाषित करें
urls = [
    "https://www.zillow.com/homedetails/1234-Main-St-Some-City-CA-90210/12345678_zpid/",
    "https://www.zillow.com/homedetails/5678-Another-St-Some-City-CA-90210/87654321_zpid/"
]

# एक ब्राउज़र अनुरोध की नकल करने के लिए अनुरोध हेडर सेट करें
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-US,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
    'sec-ch-ua-mobile': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}

# वैकल्पिक रूप से, आईपी ब्लॉकिंग से बचने के लिए प्रॉक्सी सेट करें
proxies = {
    'http': 'http://username:password@your_proxy_address',
    'https': 'https://username:password@your_proxy_address',
}

# सभी गुणों के लिए डेटा संग्रहीत करने के लिए सूची
all_properties = []

for url in urls:
    try:
        # HTTP GET अनुरोध हेडर और प्रॉक्सी के साथ भेजें
        response = requests.get(url, headers=headers, proxies=proxies)
        response.raise_for_status()  # Ensure we got a valid response

        # LXML का उपयोग करके HTML सामग्री को पार्स करें
        parser = fromstring(response.text)

        # XPath का उपयोग करके डेटा निकालें
        title = ' '.join(parser.xpath('//h1[@class="Text-c11n-8-99-3__sc-aiai24-0 dFxMdJ"]/text()'))
        rent_estimate_price = parser.xpath('//span[@class="Text-c11n-8-99-3__sc-aiai24-0 dFhjAe"]//text()')[-2]
        assessment_price = parser.xpath('//span[@class="Text-c11n-8-99-3__sc-aiai24-0 dFhjAe"]//text()')[-1]

        # निकाले गए डेटा को एक शब्दकोश में स्टोर करें
        property_data = {
            'title': title,
            'Rent estimate price': rent_estimate_price,
            'Assessment price': assessment_price
        }

        # प्रॉपर्टी डेटा को सूची में जोड़ें
        all_properties.append(property_data)

    except requests.exceptions.HTTPError as e:
        print(f"HTTP error occurred: {e}")
    except requests.exceptions.RequestException as e:
        print(f"An error occurred: {e}")

# आउटपुट JSON फ़ाइल नाम को परिभाषित करें
output_file = 'zillow_properties.json'

# राइट मोड में फ़ाइल खोलें और डेटा डंप करें
with open(output_file, 'w') as f:
    json.dump(all_properties, f, indent=4)

print(f"Scraped data saved to {output_file}")

HTML पृष्ठों की संरचना को समझकर और अनुरोधों और LXML जैसे शक्तिशाली पुस्तकालयों का लाभ उठाकर, आप कुशलतापूर्वक संपत्ति के विवरण निकाल सकते हैं। प्रॉक्सिज़ को नियोजित करना और उपयोगकर्ता-एजेंटों को घुमाना आपको अवरुद्ध होने के जोखिम के बिना ज़िलो जैसी साइटों पर बड़ी मात्रा में अनुरोध करने में सक्षम बनाता है। इन गतिविधियों के लिए, स्थैतिक आईएसपी प्रॉक्सी या घूर्णन आवासीय परदे के पीछे इष्टतम विकल्प माना जाता है।

टिप्पणियाँ:

0 टिप्पणियाँ