File size: 3,088 Bytes
718c4ae
 
 
69a7c18
 
718c4ae
 
69a7c18
718c4ae
 
 
 
 
 
69a7c18
 
 
 
7b11c4f
 
 
69a7c18
7b11c4f
 
 
 
 
718c4ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 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)