ویب سکریپنگ مختلف مقاصد کے لئے ویب سائٹوں سے ڈیٹا نکالنے کا ایک طاقتور طریقہ ہے ، جیسے تجزیہ ، تحقیق ، اور کاروبار میں ذہانت۔ یہ سبق آپ کو کلیدی حکمت عملیوں اور تکنیکوں پر توجہ دینے کے ساتھ ازگر میں والمارٹ پروڈکٹ کی معلومات کو کھرچنے میں مدد کرتا ہے۔ والمارٹ سکریپنگ ایک ایسی مثال پیش کرتی ہے جہاں ہم والمارٹ سائٹوں کے تحت مختلف صفحات پر پائے جانے والے نام ، قیمت یا جائزوں جیسے مصنوعات کی تفصیلات کرسکتے ہیں۔
یہ گائیڈ HTTP درخواستیں بنانے کے لئے درخواستوں کی لائبریری اور HTML مواد کو تجزیہ کرنے کے لئے LXML لائبریری کا استعمال کرے گا۔
اس سے پہلے کہ ہم شروع کریں ، یقینی بنائیں کہ آپ نے اپنی مشین پر ازگر انسٹال کرلیا ہے۔ آپ PIP کا استعمال کرتے ہوئے مطلوبہ لائبریریوں کو انسٹال کرسکتے ہیں:
pip install requests
pip install lxml
pip install urllib3
اگلا ، آئیے ضروری لائبریریوں کو درآمد کریں:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
کھرچنے کے لئے والمارٹ پروڈکٹ یو آر ایل کی فہرست۔
product_urls = [
'link with https',
'link with https',
'link with https'
]
کسی ویب سائٹ کو کھرچنے کے ل it ، یہ بہت ضروری ہے کہ کوئی صحیح ہیڈر استعمال کرے ، خاص طور پر صارف ایجنٹ ہیڈر ، تاکہ کسی حقیقی براؤزر سے درخواست کی تقلید کی جاسکے۔ مزید یہ کہ ، گھومنے والے پراکسی سرورز کا استعمال کرتے ہوئے سائٹ کے مالکان کے ذریعہ اینٹی بوٹ اقدامات کی وجہ سے کوئی بھی محدود ہونے سے بچ سکتا ہے۔ ذیل میں صارف ایجنٹ کے تاروں کی مثالیں ہیں جس کے ساتھ ساتھ اس بات کی بھی وضاحت کی گئی ہے کہ کس طرح پراکسی سرورز کو مربوط کیا جائے جن کو IP ایڈریس کی بنیاد پر اجازت کی ضرورت ہوتی ہے۔
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
براؤزر کی درخواستوں کی نقالی کرنے کے لئے ہیڈر مقرر کریں اور پتہ لگانے سے گریز کریں۔
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',
'dnt': '1',
'priority': 'u=0, i',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'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',
}
مصنوعات کی تفصیلات کو ذخیرہ کرنے کے لئے ایک خالی فہرست بنائیں۔
product_details = []
URL صفحات کے لئے گنتی کا عمل مندرجہ ذیل طور پر چلتا ہے: ہر URL صفحے کے لئے ، تصادفی طور پر منتخب صارف ایجنٹ اور پراکسی کا استعمال کرتے ہوئے ایک GET درخواست بھیجی جاتی ہے۔ HTML جواب موصول ہونے پر ، اس کی تفصیلات نکالنے کے لئے تیار کیا جاتا ہے جیسے مصنوعات کا نام ، قیمت اور جائزے۔ نکالا ہوا ڈیٹا ایک لغت کے طور پر محفوظ کیا جاتا ہے ، جو بعد میں اس فہرست میں شامل کیا جاتا ہے جو پہلے تشکیل دیا گیا تھا۔
for url in product_urls:
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': f'http://{random.choice(proxy)}',
'https': f'http://{random.choice(proxy)}',
}
try:
# یو آر ایل کو ایک HTTP حاصل کریں درخواست بھیجیں
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
print(response.status_code)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f'Error fetching data: {e}')
# LXML کا استعمال کرتے ہوئے HTML مواد کی تجزیہ کریں
parser = html.fromstring(response.text)
# مصنوعات کا عنوان نکالیں
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# مصنوعات کی قیمت نکالیں
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# جائزہ لینے کی تفصیلات نکالیں
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# ایک لغت میں اسٹور نکالے گئے تفصیلات
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# فہرست میں مصنوعات کی تفصیلات شامل کریں
product_details.append(product_detail)
عنوان:
قیمت:
تفصیل کا جائزہ لیں:
with open('walmart_products.csv', 'w', newline='') as csvfile:
fieldnames = ['title', 'price', 'review_details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product_detail in product_details:
writer.writerow(product_detail)
تبصرے کے ساتھ مکمل کوڈ یہ ہے کہ آپ کو بہتر طور پر سمجھنے میں مدد کریں:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# کھرچنے کیلئے پروڈکٹ یو آر ایل کی فہرست
product_urls = [
'link with https',
'link with https',
'link with https'
]
# گمنامی کے لئے بے ترتیب صارف ایجنٹ ڈور
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
# IP گردش کے لئے پراکسی فہرست
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
# براؤزر کی درخواستوں کی نقالی کرنے کے لئے ہیڈر
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',
'dnt': '1',
'priority': 'u=0, i',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'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',
}
# مصنوعات کی تفصیلات کو ذخیرہ کرنے کے لئے خالی فہرست کا آغاز کریں
product_details = []
# ہر پروڈکٹ یو آر ایل کے ذریعے لوپ
for url in product_urls:
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': f'http://{random.choice(proxy)}',
'https': f'http://{random.choice(proxy)}',
}
try:
# یو آر ایل کو ایک HTTP حاصل کریں درخواست بھیجیں
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
print(response.status_code)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f'Error fetching data: {e}')
# LXML کا استعمال کرتے ہوئے HTML مواد کی تجزیہ کریں
parser = html.fromstring(response.text)
# مصنوعات کا عنوان نکالیں
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# مصنوعات کی قیمت نکالیں
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# جائزہ لینے کی تفصیلات نکالیں
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# ایک لغت میں اسٹور نکالے گئے تفصیلات
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# فہرست میں مصنوعات کی تفصیلات شامل کریں
product_details.append(product_detail)
# نکالا ہوا ڈیٹا CSV فائل میں لکھیں
with open('walmart_products.csv', 'w', newline='') as csvfile:
fieldnames = ['title', 'price', 'review_details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product_detail in product_details:
writer.writerow(product_detail)
ہمارا سبق یہ ظاہر کرتا ہے کہ والمارٹ سے پروڈکٹ ڈیٹا کو کھرچنے کے لئے ازگر کی لائبریریوں کو کس طرح استعمال کیا جائے اور اس کے بعد کے تجزیے کے لئے اسے CSV فارمیٹ میں محفوظ کیا جائے۔ فراہم کردہ اسکرپٹ بنیادی ہے اور ایک ایسی فاؤنڈیشن پیش کرتا ہے جس کو سکریپنگ کے عمل کی کارکردگی کو بڑھانے کے لئے بڑھایا جاسکتا ہے۔ اضافہ میں انسانی براؤزنگ کے نمونوں کی نقالی کرنے کی درخواستوں کے مابین بے ترتیب تاخیر کا تعارف ، پتہ لگانے سے بچنے کے لئے صارف ایجنٹ اور پراکسی گردش کو نافذ کرنا ، اور ممکنہ کھرچنے والی رکاوٹوں یا ناکامیوں کا انتظام کرنے کے لئے ایک مضبوط غلطی سے نمٹنے کے نظام کو تیار کرنا شامل ہے۔
تبصرے: 0