ازگر کا استعمال کرتے ہوئے ییلپ کو کھرچنے کا طریقہ

تبصرے: 0

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

مرحلہ 1: ماحول کو ترتیب دینا

سکریپنگ کے عمل کو شروع کرنے سے پہلے ، یقینی بنائیں کہ آپ کے پاس ازگر انسٹال ہے اور مطلوبہ لائبریریوں:

pip install requests
pip install lxml

یہ لائبریریاں HTTP کی درخواستیں YELP کو بھیجنے ، HTML مواد کی تجزیہ کرنے اور جس ڈیٹا کو ہماری ضرورت ہے اسے نکالنے میں ہماری مدد کریں گی۔

مرحلہ 2: ییلپ کو درخواست بھیجنا

سب سے پہلے ، ہمیں HTML مواد کو لانے کے لئے ییلپ سرچ نتائج کے صفحے پر گیٹ درخواست بھیجنے کی ضرورت ہے۔ یہ کیسے کریں یہ ہے:

import requests

# Yelp search page URL
url = "https://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA"

# Send a GET request to fetch the HTML content
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    print("Successfully fetched the page content")
else:
    print("Failed to retrieve the page content")

HTTP ہیڈرز کو سمجھنا

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

یہ ہے کہ آپ ہیڈر کیسے ترتیب دے سکتے ہیں:

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',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
    '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',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}

response = requests.get(url, headers=headers)

پراکسی گردش کو نافذ کرنا

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

proxies = {
    'http': 'http://username:password@proxy-server:port',
    'https': 'https://username:password@proxy-server:port'
}

response = requests.get(url, headers=headers, proxies=proxies)

مرحلہ 3: LXML کے ساتھ HTML مواد کی تجزیہ کرنا

ایک بار جب ہمارے پاس HTML مواد موجود ہے تو ، اگلا مرحلہ اس کی تجزیہ کرنا اور متعلقہ ڈیٹا کو نکالنا ہے۔ ہم اس مقصد کے لئے LXML لائبریری کا استعمال کریں گے۔

from lxml import html

# LXML کا استعمال کرتے ہوئے HTML مواد کی تجزیہ کریں
parser = html.fromstring(response.content)

عناصر کو کھرچنے کے لئے شناخت کرنا

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

# Extract individual restaurant elements
elements = parser.xpath('//div[@data-testid="serp-ia-card"]')[2:-1]

ڈیٹا نکالنے کے لئے ایکس پاتھ کا استعمال

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

یہاں ہر ڈیٹا پوائنٹ کے لئے مخصوص XPATHS ہیں:

  1. ریستوراں کا نام: .//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/text()
  2. ریستوراں URL: .//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/@href
  3. کھانا: .//div[@class="priceCategory__09f24___4Wsg iaPriceCategory__09f24__x9YrM y-css-2hdccn"]/div/div/div/a/button/span/text()
  4. درجہ بندی: .//div[@class="y-css-9tnml4"]/@aria-label

مرحلہ 4: ہر ریستوراں کی فہرست سے ڈیٹا نکالنا

اب جب کہ ہمارے پاس HTML مواد ہے اور اس نے ممکنہ IP مسدود کرنے کو سنبھالا ہے ، ہم ہر ریستوراں کی فہرست سے مطلوبہ ڈیٹا نکال سکتے ہیں۔

restaurants_data = []

# Iterate over each restaurant element
for element in elements:
    # Extract the restaurant name
    name = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/text()')[0]

    # Extract the restaurant URL
    url = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/@href')[0]

    # Extract the cuisines
    cuisines = element.xpath('.//div[@class="priceCategory__09f24___4Wsg iaPriceCategory__09f24__x9YrM y-css-2hdccn"]/div/div/div/a/button/span/text()')

    # Extract the rating
    rating = element.xpath('.//div[@class="y-css-9tnml4"]/@aria-label')[0]

    # Create a dictionary to store the data
    restaurant_info = {
        "name": name,
        "url": url,
        "cuisines": cuisines,
        "rating": rating
    }

    # Add the restaurant info to the list
    restaurants_data.append(restaurant_info)

مرحلہ 5: JSON کے بطور ڈیٹا محفوظ کرنا

ڈیٹا نکالنے کے بعد ، ہمیں اسے ساختی شکل میں بچانے کی ضرورت ہے۔ JSON اس مقصد کے لئے وسیع پیمانے پر استعمال شدہ شکل ہے۔

import json

# Save the data to a JSON file
with open('yelp_restaurants.json', 'w') as f:
    json.dump(restaurants_data, f, indent=4)

print("Data extraction complete. Saved to yelp_restaurants.json")

مکمل کوڈ

import requests
from lxml import html
import json

# Yelp search page URL
url = "https://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA"

# Set up headers to mimic a browser request
headers = {
    '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',
    'Accept-Language': 'en-US,en;q=0.5'
}

# Set up proxies if required
proxies = {
    'http': 'http://username:password@proxy-server:port',
    'https': 'https://username:password@proxy-server:port'
}

# Send a GET request to fetch the HTML content
response = requests.get(url, headers=headers, proxies=proxies)

# Check if the request was successful
if response.status_code == 200:
    print("Successfully fetched the page content")
else:
    print("Failed to retrieve the page content")

# Parse the HTML content using lxml
parser = html.fromstring(response.content)

# Extract individual restaurant elements
elements = parser.xpath('//div[@data-testid="serp-ia-card"]')[2:-1]

# Initialize a list to hold the extracted data
restaurants_data = []

# Iterate over each restaurant element
for element in elements:
    # Extract the restaurant name
    name = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/text()')[0]

    # Extract the restaurant URL
    url = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/@href')[0]

    # Extract the cuisines
    cuisines = element.xpath('.//div[@class="priceCategory__09f24___4Wsg iaPriceCategory__09f24__x9YrM y-css-2hdccn"]/div/div/div/a/button/span/text()')

    # Extract the rating
    rating = element.xpath('.//div[@class="y-css-9tnml4"]/@aria-label')[0]

    # Create a dictionary to store the data
    restaurant_info = {
        "name": name,
        "url": url,
        "cuisines": cuisines,
        "rating": rating
    }

    # Add the restaurant info to the list
    restaurants_data.append(restaurant_info)

# Save the data to a JSON file
with open('yelp_restaurants.json', 'w') as f:
    json.dump(restaurants_data, f, indent=4)

print("Data extraction complete. Saved to yelp_restaurants.json")

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

تبصرے:

0 تبصرے