مسابقتی تجزیہ ، قیمتوں کی نگرانی ، اور مارکیٹ ریسرچ کے لئے ای کامرس ویب سائٹوں سے مصنوع کے ڈیٹا کو کھرچنا ضروری ہے۔ آپ پروڈکٹ پیجز سے ڈیٹا کو موثر انداز میں کھرچنے کے لئے ازگر کا استعمال کرسکتے ہیں۔ اس گائیڈ میں ، ہم یہ ظاہر کریں گے کہ درخواستوں اور LXML کے امتزاج کا استعمال کرتے ہوئے آن لائن اسٹورز سے مصنوع کی معلومات کو کس طرح کھرچیں گے۔
ای کامرس سکریپنگ میں آن لائن اسٹورز سے نام ، قیمتیں اور آئی ڈی جیسے مصنوعات کی تفصیلات نکالنا شامل ہے۔ ازگر ، اپنی ورسٹائل لائبریریوں کے ساتھ ، اس کام کو موثر اور سیدھا بنا دیتا ہے۔ اس گائیڈ میں ، ہم کوسٹکو کی ویب سائٹ سے مصنوعات کی معلومات کو کھرچیں گے۔
سکریپنگ کے عمل میں غوطہ لگانے سے پہلے ، یقینی بنائیں کہ آپ کے پاس ضروری ازگر کی لائبریریاں نصب ہیں:
pip install requests
pip install lxml
ہم ویب سائٹ پر مخصوص پروڈکٹ پیجز سے مصنوع کے نام ، مصنوعات کی خصوصیات اور پروڈکٹ برانڈز نکالنے پر توجہ دیں گے۔
کسی بھی ویب سائٹ سے ڈیٹا نکالنے کے ل you ، آپ کو ویب پیج کی ساخت کو سمجھنے کی ضرورت ہے۔ ایک ویب سائٹ کا صفحہ کھولیں اور ان عناصر کا معائنہ کریں جو آپ کھرچنا چاہتے ہیں (جیسے ، مصنوعات کا نام ، خصوصیات برانڈ ، وغیرہ)۔
سب سے پہلے ، ہم پروڈکٹ کے صفحات پر HTTP GET درخواست بھیجنے کے لئے درخواستوں کی لائبریری کا استعمال کریں گے۔ ہم ایک حقیقی براؤزر کی درخواست کی نقالی کرنے کے لئے درخواست کے ہیڈر بھی مرتب کریں گے۔
import requests
# List of product URLs to scrape
urls = [
"https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
"https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]
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',
}
# Loop through each URL and send a GET request
for url in urls:
response = requests.get(url, headers=headers)
if response.status_code == 200:
html_content = response.text
# Further processing will be added in subsequent steps
else:
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
LXML کا استعمال کرتے ہوئے ، ہم پارسڈ HTML سے مطلوبہ ڈیٹا پوائنٹس نکالیں گے۔
from lxml import html
# List to store scraped data
scraped_data = []
# Loop through each URL and send a GET request
for url in urls:
response = requests.get(url)
if response.status_code == 200:
html_content = response.content
# Parse HTML content with lxml
tree = html.fromstring(html_content)
# Extract data using XPath
product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
# Append extracted data to the list
scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
else:
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
# Print the scraped data
for item in scraped_data:
print(item)
ویب سائٹیں اکثر اینٹی بوٹ اقدامات کو نافذ کرتی ہیں۔ پراکسیوں کا استعمال اور صارف کے ایجنٹوں کو گھومنے سے پتہ لگانے سے بچنے میں مدد مل سکتی ہے۔
آئی پی اجازت کے ساتھ پراکسیوں کا استعمال:
proxies = {
'http': 'http://your_proxy_ip:your_proxy_port',
'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)
Rotating User Agents:
import random
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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
# Add more user agents as needed
]
headers['user-agent'] = random.choice(user_agents)
response = requests.get(url, headers=headers)
آخر میں ، ہم مزید تجزیہ کے لئے کھرچے ہوئے ڈیٹا کو CSV فائل میں محفوظ کریں گے۔
import csv
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']
# Writing data to CSV file
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for item in scraped_data:
writer.writerow(item)
print(f"Data saved to {csv_file}")
except IOError:
print(f"Error occurred while writing data to {csv_file}")
import requests
import urllib3
from lxml import html
import csv
import random
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# List of product URLs to scrape
urls = [
"https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
"https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]
# headers
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',
}
# List of user agents for rotating requests
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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
# Add more user agents as needed
]
# List of proxies for rotating requests
proxies = [
{'http': 'http://your_proxy_ip:your_proxy_port', 'https': 'https://your_proxy_ip:your_proxy_port'},
{'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
# Add more proxies as needed
]
# List to store scraped data
scraped_data = []
# Loop through each URL and send a GET request
for url in urls:
# Choose a random user agent for the request headers
headers['user-agent'] = random.choice(user_agents)
# Choose a random proxy for the request
proxy = random.choice(proxies)
# Send HTTP GET request to the URL with headers and proxy
response = requests.get(url, headers=headers, proxies=proxy, verify=False)
if response.status_code == 200:
# Store the HTML content from the response
html_content = response.content
# Parse HTML content with lxml
tree = html.fromstring(html_content)
# Extract data using XPath
product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
# Append extracted data to the list
scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
else:
# Print error message if request fails
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
# CSV file setup
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']
# Writing data to CSV file
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for item in scraped_data:
writer.writerow(item)
print(f"Data saved to {csv_file}")
except IOError:
# Print error message if writing to file fails
print(f"Error occurred while writing data to {csv_file}")
ای کامرس سائٹوں جیسے کوسٹکو سے کھرچنے کے لئے ازگر کا استعمال اس کے تجزیہ کرنے کے ساتھ ساتھ اسٹریٹجک فیصلے کرنے کے لئے مصنوعات کی معلومات جمع کرنے کا ایک موثر طریقہ ہے۔ لائبریریوں کا مناسب استعمال جیسے ، درخواستوں کے ساتھ ساتھ LXML کے نتیجے میں خودکار نکالنے کے عمل ہوتے ہیں جو اینٹی بوٹ API کے نفاذ کے بارے میں مؤثر طریقے سے فراموش کیے بغیر HTML مشمولات کو سنبھال سکتے ہیں۔ یہ واضح رہے کہ اخلاقی سکریپنگ پروٹوکول پر ہمیشہ عمل کرنا چاہئے۔
تبصرے: 0