1. Kütüphaneler:
Kullanacağımız Python kütüphaneleri:
- requests: HTTP istekleri göndermek için.
- BeautifulSoup: HTML içeriğini ayrıştırmak için.
- json: JSON verilerini işlemek için.
2. Kod Açıklaması:
Aşağıda verilen kod, Hepsiburada'dan belirli bir ürünün bilgilerini çekmek için yazılmıştır:
import requests
from bs4 import BeautifulSoup
import json
# URL ve headers ayarları
url = 'https://www.hepsiburada.com/xiaomi-smart-air-purifier-elite-filtre-p-hbcv00005ctu0x'
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': 'tr,en-US;q=0.9,en;q=0.8,tr-TR;q=0.7',
'cache-control': 'max-age=0',
'referer': 'https://www.hepsiburada.com/',
'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"',
'sec-ch-ua-mobile': '?1',
'sec-ch-ua-platform': '"Android"',
'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 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36',
}
# HTTP isteği gönder
response = requests.get(url, headers=headers)
html_content = response.text
# BeautifulSoup ile HTML ayrıştır
soup = BeautifulSoup(html_content, 'html.parser')
# Script içeriğini bulma
script_tags = soup.find_all('script', type='application/ld+json')
# Script içeriğini kontrol etme
if not script_tags:
print("JSON içeren script etiketi bulunamadı.")
else:
script_data = script_tags[0].string # İlk JSON script içeriğini al
print("Script İçeriği:")
#print(script_data) # Script içeriğini yazdırarak kontrol edin
# JSON verisini ayrıştırma
try:
json_data = json.loads(script_data)
if isinstance(json_data, dict) and '@graph' in json_data:
# Ürün bilgilerini al
product_info = next((item for item in json_data.get('@graph', []) if item.get('@type') == 'Product'), {})
# Bilgileri yazdır
print("\nÜrün Bilgileri:")
print(f"Ürün Adı: {product_info.get('name', 'Bilgi Yok')}")
print(f"Açıklama: {product_info.get('description', 'Bilgi Yok')}")
print(f"Kategori: {product_info.get('category', 'Bilgi Yok')}")
print(f"SKU (Stok Kodu): {product_info.get('sku', 'Bilgi Yok')}")
print(f"GTIN (Global Ticaret Ürün Numarası): {product_info.get('gtin', 'Bilgi Yok')}")
print(f"Marka: {product_info.get('brand', {}).get('name', 'Bilgi Yok')}")
print(f"Fiyat: {product_info.get('offers', {}).get('price', 'Bilgi Yok')} {product_info.get('offers', {}).get('priceCurrency', 'TRY')}")
print(f"Stok Durumu: {product_info.get('offers', {}).get('availability', 'Bilgi Yok')}")
print(f"Resimler: {', '.join(product_info.get('image', []))}")
print(f"Satıcı: {product_info.get('offers', {}).get('seller', {}).get('name', 'Bilgi Yok')}")
print(f"İade Politikası Linki: {product_info.get('hasMerchantReturnPolicy', {}).get('merchantReturnLink', 'Bilgi Yok')}")
print(f"İade Günleri: {product_info.get('hasMerchantReturnPolicy', {}).get('merchantReturnDays', 'Bilgi Yok')}")
else:
print("JSON verisi beklenen formatta değil.")
except json.JSONDecodeError as e:
print(f"JSON ayrıştırma hatası: {e}")3. Kodun Açıklaması:
- URL ve Headers: İstek göndereceğimiz URL ve HTTP başlıkları ayarlanır.
- HTTP İsteği Gönderme: requests.get ile belirlenen URL'ye istek gönderilir.
- HTML İçeriği Ayrıştırma: BeautifulSoup kullanılarak HTML içeriği ayrıştırılır.
- JSON Script Bulma: BeautifulSoup ile <script> etiketleri içindeki JSON verisi çekilir.
- JSON Verisini İşleme: JSON verisi ayrıştırılarak ürün bilgileri ekrana yazdırılı