ییلپ سے ڈیٹا کو کھرچنا مقامی ریستوراں میں قیمتی بصیرت فراہم کرسکتا ہے ، جس میں نام ، یو آر ایل ، کھانا اور درجہ بندی جیسی تفصیلات شامل ہیں۔ درخواستوں اور LXML ازگر کی لائبریریوں کا استعمال کرتے ہوئے ، اس ٹیوٹوریل میں یہ دکھایا جائے گا کہ ییلپ تلاش کے نتائج کو کس طرح کھرچنا ہے۔ متعدد تکنیکوں کا احاطہ کیا جائے گا جس میں پراکسیوں کا استعمال ، ہیڈر کو سنبھالنا اور ایکس پاتھ کے ساتھ ڈیٹا نکالنا شامل ہے۔
سکریپنگ کے عمل کو شروع کرنے سے پہلے ، یقینی بنائیں کہ آپ کے پاس ازگر انسٹال ہے اور مطلوبہ لائبریریوں:
pip install requests
pip install lxml
یہ لائبریریاں HTTP کی درخواستیں YELP کو بھیجنے ، HTML مواد کی تجزیہ کرنے اور جس ڈیٹا کو ہماری ضرورت ہے اسے نکالنے میں ہماری مدد کریں گی۔
سب سے پہلے ، ہمیں 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 ہیڈر شامل کرنا ضروری ہے۔ ہیڈر درخواست کے بارے میں میٹا ڈیٹا پر مشتمل ہوسکتے ہیں ، جیسے صارف ایجنٹ ، جو درخواست دینے والے براؤزر یا ٹول کی نشاندہی کرتا ہے۔ ان ہیڈر سمیت ہدف کی ویب سائٹ کے ذریعہ مسدود کرنے یا تھروٹلنگ سے بچنے میں مدد مل سکتی ہے۔
یہ ہے کہ آپ ہیڈر کیسے ترتیب دے سکتے ہیں:
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)
ایک بار جب ہمارے پاس 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 ہیں:
اب جب کہ ہمارے پاس 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)
ڈیٹا نکالنے کے بعد ، ہمیں اسے ساختی شکل میں بچانے کی ضرورت ہے۔ 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