Antique_Auth_API / code /web_scraper_ebay.py
hatamo's picture
Updated chromium driver installation
7b11c4f
# scrape_ebay_offer.py
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
import time
import requests
import os
def scrape_ebay_offer(url: str):
"""Zwraca dane aukcji bez zapisywania na dysk"""
print(f"🔍 eBay: {url}")
options = uc.ChromeOptions()
options.add_argument("--window-position=-3000,0")
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
# Ustawienie binarki Chrome'a
if os.path.exists('/usr/bin/google-chrome'):
options.binary_location = '/usr/bin/google-chrome'
driver = uc.Chrome(
service=Service(ChromeDriverManager().install()),
options=options,
use_subprocess=True
)
try:
driver.get(url)
time.sleep(4)
# TITLE
try:
title_element = driver.find_element(By.CSS_SELECTOR, "h1.x-item-title__mainTitle")
title_str = title_element.text.strip()
except:
title_str = "untitled_ebay"
# PARAMETERS
parameter_list = []
try:
rows = driver.find_elements(By.CSS_SELECTOR, ".ux-labels-values")
for row in rows:
try:
label = row.find_element(By.CSS_SELECTOR, ".ux-labels-values__labels").text.strip()
value = row.find_element(By.CSS_SELECTOR, ".ux-labels-values__values").text.strip()
if label and value:
parameter_list.append(f"{label}: {value}")
except:
continue
except:
pass
# DESCRIPTION
description_content = "No description"
try:
frame = driver.find_element(By.ID, "desc_ifr")
driver.switch_to.frame(frame)
description_content = driver.find_element(By.TAG_NAME, "body").text.strip()
driver.switch_to.default_content()
except:
pass
# IMAGES
unique_links = set()
try:
thumbnails = driver.find_elements(By.CSS_SELECTOR, ".ux-image-grid-item img")
for img in thumbnails:
src = img.get_attribute("src") or img.get_attribute("data-src")
if src and "ebayimg.com" in src:
# Zamień na HD
hd_link = src.replace("/s-l64/", "/s-l1600").replace("/s-l140/", "/s-l1600")
unique_links.add(hd_link)
except:
pass
return {
"platform": "ebay",
"url": url,
"title": title_str,
"description": description_content,
"parameters": parameter_list,
"image_urls": list(unique_links)
}
finally:
driver.quit()
if __name__ == "__main__":
url = input("eBay URL: ")
result = scrape_ebay_offer(url)
print(result)