Το περασμένο Σαββατοκύριακο, ξόδεψα ένα ολόκληρο μπρίκι καφέ δοκιμάζοντας τέσσερις διαφορετικούς τρόπους για να κάνω scrape τη σελίδα Amazon Best Sellers. Δύο λειτούργησαν εξαιρετικά, ένας παραλίγο να μου μπλοκάρει το IP, και ένας χρειάστηκε κυριολεκτικά δύο κλικ. Να όλα όσα έμαθα.
Το Amazon είναι ένα τεράστιο marketplace — , και ένα σύστημα Best Sellers Rank (BSR) που ενημερώνεται κάθε ώρα. Αν κάνετε έρευνα προϊόντων για FBA, ανάλυση ανταγωνιστικών τιμών ή απλώς προσπαθείτε να εντοπίσετε τάσεις πριν από τους ανταγωνιστές σας, τα δεδομένα των Best Sellers είναι πραγματικός θησαυρός.
Αλλά το να βγάλετε αυτά τα δεδομένα από το Amazon και να τα βάλετε σε ένα spreadsheet; Εκεί αρχίζουν τα δύσκολα. Δοκίμασα requests + BeautifulSoup, Selenium, ένα scraping API και το (το δικό μας no-code AI web scraper) για να δω ποια προσέγγιση αποδίδει πραγματικά — και ποια θα σας αφήσει να κοιτάτε μια σελίδα CAPTCHA.
Τι είναι τα Amazon Best Sellers (και γιατί να σας νοιάζει);
Το Amazon Best Sellers Rank (BSR) είναι ο ζωντανός πίνακας κατάταξης του Amazon, που ταξινομεί τα προϊόντα με βάση τον όγκο πωλήσεων σε κάθε κατηγορία. Σκεφτείτε το σαν έναν διαγωνισμό δημοφιλίας, που ανανεώνεται κάθε ώρα και βασίζεται τόσο σε πρόσφατα όσο και σε ιστορικά δεδομένα πωλήσεων. Το ίδιο το Amazon το περιγράφει έτσι:
"Ο υπολογισμός του Amazon Best Sellers βασίζεται στις πωλήσεις του Amazon και ενημερώνεται κάθε ώρα ώστε να αντικατοπτρίζει τις πρόσφατες και ιστορικές πωλήσεις κάθε προϊόντος που πωλείται στο Amazon." —
Η σελίδα Best Sellers εμφανίζει τα 100 κορυφαία προϊόντα ανά κατηγορία, χωρισμένα σε δύο σελίδες των 50. Η πρώτη σελίδα καλύπτει τις θέσεις #1–50 και η δεύτερη τις #51–100. Το Amazon έχει επιβεβαιώσει ότι οι προβολές σελίδας και οι κριτικές πελατών ΔΕΝ επηρεάζουν το BSR — καθορίζεται αποκλειστικά από τις πωλήσεις.
Ποιοι ενδιαφέρονται γι’ αυτά τα δεδομένα; Πωλητές e-commerce που ψάχνουν προϊόντα για FBA, ομάδες πωλήσεων που χτίζουν ανταγωνιστική πληροφόρηση, ομάδες operations που παρακολουθούν τις τάσεις τιμών και ερευνητές αγοράς που παρακολουθούν την ανάπτυξη κατηγοριών. Από την εμπειρία μου, όποιος πουλάει στο Amazon ή ανταγωνίζεται με το Amazon καταλήγει τελικά να χρειάζεται αυτά τα δεδομένα σε spreadsheet.
Γιατί να κάνετε scrape τα Amazon Best Sellers με Python;
Η χειροκίνητη έρευνα προϊόντων τρώει χρόνο. Μια έδειξε ότι οι εργαζόμενοι ξοδεύουν 9,3 ώρες την εβδομάδα μόνο για να αναζητούν και να συγκεντρώνουν πληροφορίες. Για τις ομάδες e-commerce, αυτό σημαίνει ώρες χαμένων clicks στις σελίδες του Amazon, αντιγραφής ονομάτων και τιμών προϊόντων και επικόλλησής τους σε spreadsheets — μόνο και μόνο για να ξανακάνουν τα ίδια την επόμενη εβδομάδα.
Δείτε γρήγορα τις περιπτώσεις χρήσης που κάνουν το scraping των Best Sellers να αξίζει:
| Περίπτωση Χρήσης | Τι Παίρνετε | Ποιοι Ωφελούνται |
|---|---|---|
| Έρευνα Προϊόντων για FBA | Εντοπισμός προϊόντων με υψηλή ζήτηση και χαμηλό ανταγωνισμό μέσω BSR και αριθμού κριτικών | Πωλητές Amazon, dropshippers |
| Ανταγωνιστική Τιμολόγηση | Παρακολούθηση αλλαγών τιμών στα κορυφαία προϊόντα της κατηγορίας σας | Ομάδες e-commerce, αναλυτές τιμολόγησης |
| Παρακολούθηση Τάσεων Αγοράς | Εντοπισμός αναδυόμενων κατηγοριών και εποχικών μεταβολών | Product managers, ερευνητές αγοράς |
| Lead Generation | Δημιουργία λιστών με κορυφαία brands και τις σειρές προϊόντων τους | Ομάδες πωλήσεων, B2B outreach |
| Ανάλυση Ανταγωνισμού | Σύγκριση των προϊόντων σας με τους ηγέτες της κατηγορίας | Brand managers, ομάδες στρατηγικής |
Το ROI είναι πραγματικό: μια σε 2.700 επαγγελματίες του commerce έδειξε ότι τα εργαλεία AI εξοικονομούν κατά μέσο όρο στους επαγγελματίες του e-commerce. Και οι πωλητές που χρησιμοποιούν αυτοματοποιημένη παρακολούθηση τιμών κρατούν το Buy Box έναντι 42% για τους χειροκίνητους trackers — δηλαδή 37% αύξηση πωλήσεων χάρη στις ταχύτερες αντιδράσεις στις αλλαγές τιμών.
4 τρόποι για να κάνετε scrape τα Amazon Best Sellers με Python: γρήγορη σύγκριση
Πριν μπούμε στα βήμα-βήμα tutorials, ιδού η σύγκριση που θα ήθελα να είχα πριν ξεκινήσω τις δοκιμές. Αυτός ο πίνακας θα σας βοηθήσει να διαλέξετε τη σωστή μέθοδο για την περίπτωσή σας:
| Κριτήριο | requests + BS4 | Selenium | Scraping API (π.χ. Scrape.do) | Thunderbit (No-Code) |
|---|---|---|---|---|
| Δυσκολία Ρύθμισης | Μεσαία | Υψηλή (driver, browser) | Χαμηλή (API key) | Πολύ χαμηλή (Chrome extension) |
| Υποστήριξη Lazy Loading | Όχι | Ναι (μέσω scroll) | Ναι (rendered HTML) | Ναι (το AI χειρίζεται το rendering) |
| Αντοχή σε Anti-Bot | Χαμηλή (IP bans) | Μεσαία (εντοπίσιμο) | Υψηλή (rotating proxies) | Υψηλή (cloud + browser modes) |
| Βάρος Συντήρησης | Υψηλό (σπάνε οι selectors) | Υψηλό (updates driver + selectors) | Χαμηλό | Πολύ χαμηλό (το AI προσαρμόζεται σε αλλαγές layout) |
| Κόστος | Δωρεάν | Δωρεάν | Επί πληρωμή (ανά request) | Δωρεάν επίπεδο + paid plans |
| Ιδανικό για | Εφάπαξ scrapes, εκμάθηση | Σελίδες με πολύ JS, login-required | Κλίμακα / παραγωγή | Μη τεχνικούς, γρήγορη έρευνα, επαναλαμβανόμενη παρακολούθηση |
Αν θέλετε να μάθετε τα βασικά του Python scraping, ξεκινήστε με τη Μέθοδο 1 ή 2. Αν χρειάζεστε αξιοπιστία σε production κλίμακα, προτιμήστε τη Μέθοδο 3. Αν θέλετε αποτελέσματα σε δύο κλικ χωρίς να γράψετε κώδικα, πηγαίνετε κατευθείαν στη Μέθοδο 4.
Πριν ξεκινήσετε
- Δυσκολία: Αρχάριος έως ενδιάμεσος (ανάλογα με τη μέθοδο)
- Χρόνος που απαιτείται: ~15 λεπτά για το Thunderbit, ~45 λεπτά για τις Python μεθόδους
- Τι θα χρειαστείτε: Python 3.8+ (για τις Μεθόδους 1–3), browser Chrome, (για τη Μέθοδο 4) και ένα URL κατηγορίας Amazon Best Sellers ως στόχο
Μέθοδος 1: Scrape Amazon Best Sellers με requests + BeautifulSoup
Αυτή είναι η ελαφριά, φιλική προς αρχάριους προσέγγιση — χωρίς browser automation, μόνο HTTP requests και ανάλυση HTML. Επίσης, είναι αυτή που μου έμαθε τα περισσότερα για τα anti-scraping μέτρα του Amazon.
Βήμα 1: Ρύθμιση του περιβάλλοντος
Εγκαταστήστε τα απαραίτητα πακέτα:
1pip install requests beautifulsoup4 pandas
Έπειτα ορίστε τα imports σας:
1import requests
2from bs4 import BeautifulSoup
3import pandas as pd
4import random
5import time
Βήμα 2: Στείλτε request με ρεαλιστικά headers
Το Amazon μπλοκάρει requests που μοιάζουν με bot. Η πιο βασική άμυνα είναι ένα User-Agent header που μιμείται πραγματικό browser. Ορίστε ένα απόσπασμα με μια λίστα από τρέχοντα, ρεαλιστικά User-Agent strings (από το , Μάρτιος 2026):
1USER_AGENTS = [
2 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
3 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
4 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
5 "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
6 "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
7]
8headers = {"User-Agent": random.choice(USER_AGENTS)}
9url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
10response = requests.get(url, headers=headers)
11print(response.status_code) # Should be 200
Αν δείτε status code 200, είστε εντάξει. Αν δείτε 503 ή ανακατευθυνθείτε σε σελίδα CAPTCHA, το Amazon έχει επισημάνει το αίτημά σας.
Βήμα 3: Ανάλυση δεδομένων προϊόντων με BeautifulSoup
Ελέγξτε το HTML της σελίδας Amazon με τα DevTools του browser σας (δεξί κλικ → Inspect). Τα containers των προϊόντων χρησιμοποιούν το ID gridItemRoot. Μέσα σε κάθε container θα βρείτε το όνομα προϊόντος, την τιμή, το rating και το URL.
1soup = BeautifulSoup(response.text, "html.parser")
2products = []
3for item in soup.find_all("div", id="gridItemRoot"):
4 title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
5 price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
6 link_tag = item.find("a", class_="a-link-normal")
7 title = title_tag.get_text(strip=True) if title_tag else "N/A"
8 price = price_tag.get_text(strip=True) if price_tag else "N/A"
9 url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
10 products.append({"Title": title, "Price": price, "URL": url})
Προσοχή: Τα class names με πρόθεμα
_cDEzb_είναι CSS module hashes που το Amazon ανανεώνει περιοδικά. Το IDgridItemRootκαι το classa-link-normalείναι πιο σταθερά, αλλά να ελέγχετε πάντα τους selectors με τα DevTools πριν τρέξετε το scraper.
Βήμα 4: Εξαγωγή σε CSV
1df = pd.DataFrame(products)
2df.to_csv("amazon_best_sellers.csv", index=False)
3print(f"Scraped {len(products)} products")
Τι να περιμένετε — και τι πάει στραβά
Στη δοκιμή μου, αυτή η μέθοδος έδωσε περίπου 30 προϊόντα αντί για 50. Αυτό δεν είναι bug στον κώδικα — είναι το lazy loading του Amazon. Μόνο ~30 προϊόντα φορτώνονται στην αρχική προβολή της σελίδας· τα υπόλοιπα εμφανίζονται αφού κάνετε scroll, κάτι που απαιτεί εκτέλεση JavaScript που το requests δεν μπορεί να χειριστεί.
Άλλοι περιορισμοί:
- Τα IP bans έρχονται γρήγορα χωρίς proxy rotation (μπλοκαρίστηκα μετά από περίπου 15 requests σε γρήγορη διαδοχή)
- Οι CSS selectors σπάνε όταν το Amazon ενημερώνει το page layout — και το κάνει συχνά
- Δεν υπάρχει pagination handling out of the box
Για να μάθετε Python scraping, αυτή η προσέγγιση είναι εξαιρετική. Για παραγωγική χρήση, όμως, είναι εύθραυστη.
Μέθοδος 2: Scrape Amazon Best Sellers με Selenium
Το Selenium λύνει το πρόβλημα του lazy loading εκτελώντας έναν πραγματικό browser — είναι πιο βαρύ στη ρύθμιση, αλλά πιάνει και τα 50 προϊόντα ανά σελίδα.
Βήμα 1: Εγκατάσταση του Selenium
1pip install selenium pandas
Καλά νέα: από το Selenium 4.6+ και μετά, δεν χρειάζεστε πλέον το webdriver-manager. Το Selenium Manager αναλαμβάνει αυτόματα τα downloads των drivers.
1from selenium import webdriver
2from selenium.webdriver.chrome.options import Options
3from selenium.webdriver.common.by import By
4from selenium.webdriver.common.keys import Keys
5import time
6import pandas as pd
7options = Options()
8options.add_argument("--headless=new")
9options.add_argument("--window-size=1920,1080")
10options.add_argument("--disable-blink-features=AutomationControlled")
11driver = webdriver.Chrome(options=options)
Το flag --headless=new (εισαχθέν στο Chrome 109+) χρησιμοποιεί το ίδιο rendering pipeline με το headed Chrome, κάνοντας πιο δύσκολη την ανίχνευση από το Amazon.
Βήμα 2: Scroll για να περάσετε το lazy loading
Αυτό είναι το βήμα που κάνει το Selenium να αξίζει το επιπλέον setup. Το Amazon Best Sellers φορτώνει αρχικά μόνο ~30 προϊόντα — τα υπόλοιπα εμφανίζονται μετά το scroll.
1def scroll_page(driver, scrolls=5, delay=2):
2 for _ in range(scrolls):
3 driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
4 time.sleep(delay)
5driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
6time.sleep(3)
7scroll_page(driver)
Μετά το scrolling, και τα 50 προϊόντα θα πρέπει να έχουν αποδοθεί στο DOM. Διαπίστωσα ότι 5 scrolls με Page Down και καθυστέρηση 2 δευτερολέπτων ήταν αρκετά, αλλά ίσως χρειαστεί προσαρμογή ανάλογα με την ταχύτητα σύνδεσής σας.
Βήμα 3: Εξαγωγή δεδομένων προϊόντων
1items = driver.find_elements(By.ID, "gridItemRoot")
2products = []
3for item in items:
4 try:
5 title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
6 except:
7 title = "N/A"
8 try:
9 price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
10 except:
11 price = "N/A"
12 try:
13 url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
14 except:
15 url = "N/A"
16 products.append({"Title": title, "Price": price, "URL": url})
Το να περικλείετε κάθε εξαγωγή σε try/except είναι σημαντικό — κάποια προϊόντα μπορεί να είναι εκτός αποθέματος ή να λείπουν πεδία, και δεν θέλετε ένα προβληματικό στοιχείο να ρίξει ολόκληρο το scrape.
Βήμα 4: Χειρισμός pagination
Το Amazon χωρίζει τα 100 Best Sellers σε δύο σελίδες με διαφορετικές δομές URL:
1urls = [
2 "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
3 "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
4]
5all_products = []
6for url in urls:
7 driver.get(url)
8 time.sleep(3)
9 scroll_page(driver)
10 # ... extract products as above ...
11 all_products.extend(products)
12driver.quit()
Τι να περιμένετε
Στη δοκιμή μου, το Selenium έπιασε και τα 50 προϊόντα ανά σελίδα — καθαρή νίκη απέναντι στο requests + BS4. Το μειονέκτημα: χρειάστηκε περίπου 45 δευτερόλεπτα ανά σελίδα (μαζί με τις καθυστερήσεις του scroll), και πάλι πήρα flag όταν το έτρεξα πάρα πολλές φορές χωρίς proxy rotation. Το Selenium επίσης εντοπίζεται από το bot detection του Amazon ακόμη και με τα anti-detection flags — για σοβαρή κλίμακα, θα χρειαστείτε επιπλέον μέτρα (βλ. το Anti-Ban Playbook παρακάτω).
Άλλα σημεία πόνου:
- Οι ασυμφωνίες στις εκδόσεις WebDriver εξακολουθούν να συμβαίνουν περιστασιακά, αν και το Selenium Manager το έχει κάνει πολύ πιο σπάνιο
- Οι CSS selectors χρειάζονται ενημέρωση κάθε φορά που το Amazon αλλάζει το DOM
- Η κατανάλωση μνήμης είναι υψηλή — κάθε instance browser τρώει 200–400MB RAM
Μέθοδος 3: Scrape Amazon Best Sellers με Scraping API
Τα Scraping APIs είναι η προσέγγιση "ας αναλάβει κάποιος άλλος τα δύσκολα". Υπηρεσίες όπως οι Scrape.do, Oxylabs και ScrapingBee διαχειρίζονται proxy rotation, JavaScript rendering και anti-bot μέτρα — εσείς απλώς στέλνετε ένα URL και παίρνετε πίσω HTML ή JSON.
Πώς λειτουργεί
Στέλνετε το URL-στόχο σας στο API endpoint. Το API κάνει rendering της σελίδας χρησιμοποιώντας πραγματικό browser στην υποδομή του, αλλάζει proxies, χειρίζεται CAPTCHAs και επιστρέφει καθαρό HTML. Μετά αναλύετε το HTML με BeautifulSoup όπως συνήθως.
Βήμα 1: Στείλτε request μέσω του API
Παράδειγμα με Scrape.do (οι τιμές ξεκινούν από $29/μήνα για 150.000 credits, 1 credit = 1 request ανεξάρτητα από το rendering):
1import requests
2from bs4 import BeautifulSoup
3api_token = "YOUR_API_TOKEN"
4target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
5api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
6response = requests.get(api_url)
7soup = BeautifulSoup(response.text, "html.parser")
Από εδώ και πέρα, το parsing είναι ίδιο με τη Μέθοδο 1 — ίδιοι selectors, ίδια λογική εξαγωγής.
Έλεγχος κόστους
Δείτε τι χρεώνουν τα μεγάλα APIs ανά 1.000 Amazon requests με την καλύτερη διαθέσιμη τιμή:
| Πάροχος | Κόστος ανά 1.000 Requests | Σημειώσεις |
|---|---|---|
| Scrape.do | ~$0.19 | Σταθερή τιμή, χωρίς multipliers credits |
| Oxylabs | ~$1.80 | 5x multiplier για JS rendering |
| ScrapingBee | ~$4.90 | 5–25x multipliers για premium λειτουργίες |
| Bright Data | ~$5.00+ | Τα πιο πλήρη δεδομένα (686 πεδία/προϊόν), αλλά και το πιο αργό (~66 δευτ./request) |
Πλεονεκτήματα και μειονεκτήματα
Πλεονεκτήματα: Υψηλή αξιοπιστία ( στο Amazon για τους κορυφαίους παρόχους), χωρίς συντήρηση driver, αυτόματη αντιμετώπιση anti-bot και καλή κλιμάκωση.
Μειονεκτήματα: Πληρώνετε ανά request (το κόστος αυξάνεται σε μεγάλη κλίμακα), εξακολουθείτε να πρέπει να γράψετε parsing code, και παραμένετε ευάλωτοι σε αλλαγές των CSS selectors. Για 100.000 σελίδες τον μήνα, η σύγκριση του συνολικού κόστους είναι εντυπωσιακή: η κατασκευή in-house κοστίζει περίπου — δηλαδή 71% εξοικονόμηση.
Το σημείο ισορροπίας συνήθως είναι στις 500K–1M requests/μήνα. Κάτω από αυτό, ο χρόνος που κερδίζετε από τα APIs υπερκαλύπτει το κόστος.
Μέθοδος 4: Scrape Amazon Best Sellers με Thunderbit (χωρίς Python)
Πλήρης αποκάλυψη: εργάζομαι στο Thunderbit, οπότε λάβετε αυτή την ενότητα με αυτό το πλαίσιο. Παρ’ όλα αυτά, όντως δοκίμασα και τις τέσσερις μεθόδους back-to-back, και η διαφορά στον χρόνο μέχρι τα δεδομένα ήταν εντυπωσιακή.
Το είναι ένα AI web scraper που λειτουργεί ως Chrome extension. Η βασική ιδέα: αντί να γράφετε CSS selectors ή Python code, το AI διαβάζει τη σελίδα και καταλαβαίνει ποια δεδομένα πρέπει να εξαχθούν. Συγκεκριμένα για τα Amazon Best Sellers, το Thunderbit διαθέτει έτοιμα templates που δουλεύουν με ένα κλικ.
Βήμα 1: Εγκαταστήστε το Thunderbit Chrome Extension
Πηγαίνετε στο και πατήστε "Add to Chrome." Δημιουργήστε δωρεάν λογαριασμό — το free tier σάς δίνει αρκετά credits για να το δοκιμάσετε.
Βήμα 2: Ανοίξτε τη σελίδα Amazon Best Sellers
Ανοίξτε οποιαδήποτε σελίδα κατηγορίας Amazon Best Sellers στο Chrome. Για παράδειγμα:
https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/
Βήμα 3: Πατήστε "AI Suggest Fields"
Ανοίξτε το sidebar του Thunderbit και πατήστε "AI Suggest Fields." Το AI αναλύει τη δομή της σελίδας και προτείνει στήλες: Product Name, Price, Rating, Image URL, Vendor, Product URL και Rank. Στη δοκιμή μου, εντόπισε σωστά όλα τα σχετικά πεδία σε περίπου 3 δευτερόλεπτα.

Μπορείτε να μετονομάσετε, να αφαιρέσετε ή να προσθέσετε στήλες. Μπορείτε ακόμη να προσθέσετε custom AI prompts ανά πεδίο — για παράδειγμα, "categorize as Electronics/Apparel/Home" για να προσθέσετε tag κατηγορίας σε κάθε προϊόν.
Βήμα 4: Πατήστε "Scrape"
Πατήστε το κουμπί "Scrape". Το Thunderbit γεμίζει έναν δομημένο πίνακα με όλα τα δεδομένα των προϊόντων από τη σελίδα. Στο cloud mode, επεξεργάζεται έως και 50 σελίδες ταυτόχρονα παράλληλα, χειριζόμενο αυτόματα το lazy loading και το pagination.
Βήμα 5: Εξαγωγή δωρεάν
Πατήστε "Export" και επιλέξτε προορισμό: Excel, Google Sheets, Airtable ή Notion. Όλες οι εξαγωγές είναι δωρεάν σε όλα τα πλάνα — χωρίς κρυφές χρεώσεις.

Όλη η διαδικασία μου πήρε περίπου 90 δευτερόλεπτα από το άνοιγμα της σελίδας μέχρι να έχω ένα πλήρες spreadsheet. Για σύγκριση, η Μέθοδος 1 χρειάστηκε περίπου 20 λεπτά (μαζί με το debugging του lazy loading), η Μέθοδος 2 περίπου 35 λεπτά (μαζί με το setup του Selenium) και η Μέθοδος 3 περίπου 15 λεπτά (μαζί με το στήσιμο του API account).
Γιατί το Thunderbit τα καταφέρνει καλά με το Amazon
Επειδή το AI διαβάζει τη σελίδα από την αρχή κάθε φορά, προσαρμόζεται αυτόματα σε αλλαγές στο layout — χωρίς να χρειάζεστε συντήρηση CSS selectors. Αυτό λύνει άμεσα το πιο συχνό παράπονο στα forums του scraping: «Ένας βασικός web scraper δεν φτάνει, πρέπει να προσθέσεις τόσα “catch” για αλλαγές στα στοιχεία.» Όταν το Amazon αλλάζει το DOM του (κάτι που συμβαίνει συχνά), δεν χρειάζεται να ενημερώσετε τίποτα.
Το cloud scraping mode διαχειρίζεται proxy rotation, rendering και anti-bot μέτρα διαφανώς. Για χρήστες που θέλουν μια λύση τύπου «απλώς δουλεύει», αυτό εξαφανίζει ολόκληρο το άγχος του anti-ban.
Το Anti-Ban Playbook: Πώς να αποφύγετε το μπλοκάρισμα από το Amazon
Το bot detection του Amazon είναι επιθετικό. Στη διάρκεια των δοκιμών μου, το IP μου μπλοκαρίστηκε προσωρινά, και οι χρήστες σε forums αναφέρουν το ίδιο: «errors everywhere, amazon even started redirecting me to the homepage.» Αν πάτε με την Python διαδρομή (Μέθοδοι 1–3), αυτή η ενότητα είναι κρίσιμη.
Ορίστε μια πολυεπίπεδη στρατηγική, από τα βασικά έως τα πιο προχωρημένα:
1. Εναλλάξτε User-Agent strings
Το να στέλνετε συνέχεια το ίδιο User-Agent είναι κόκκινη σημαία. Χρησιμοποιήστε τη λίστα με 5+ strings από το παράδειγμα κώδικα της Μεθόδου 1 και επιλέγετε τυχαία ένα ανά request:
1headers = {"User-Agent": random.choice(USER_AGENTS)}
2. Προσθέστε τυχαίες καθυστερήσεις μεταξύ των requests
Οι σταθερές καθυστερήσεις είναι εντοπίσιμες (μοτίβα). Οι τυχαίες είναι πιο ασφαλείς:
1time.sleep(random.uniform(2, 5))
Διαπίστωσα ότι τα 2–5 δευτερόλεπτα μεταξύ requests με κρατούσαν κάτω από το ραντάρ για μικρά batches (κάτω από 50 requests). Για μεγαλύτερες εκτελέσεις, ανεβάστε το σε 3–7 δευτερόλεπτα.
3. Χρησιμοποιήστε proxy rotation
Αυτό είναι το μεγάλο ζήτημα. Τα δείχνουν ότι τα residential proxies έχουν κατά μέσο όρο ~94% success στο Amazon, έναντι ~59% για datacenter proxies — διαφορά 35 ποσοστιαίων μονάδων. Το detection stack του Amazon περιλαμβάνει TLS fingerprinting, behavioral analysis και rate limiting ανά IP, οπότε τα συνηθισμένα datacenter IPs επισημαίνονται μέσα σε δευτερόλεπτα.
Τα residential proxies είναι ακριβότερα ($2–$12 ανά GB ανάλογα με τον πάροχο), αλλά πολύ πιο αξιόπιστα. Παράδειγμα:
1proxies = {
2 "http": "http://user:pass@residential-proxy.example.com:8080",
3 "https": "http://user:pass@residential-proxy.example.com:8080"
4}
5response = requests.get(url, headers=headers, proxies=proxies)
4. Θωρακίστε το browser fingerprint σας (Selenium)
1options.add_argument('--disable-blink-features=AutomationControlled')
2options.add_experimental_option("excludeSwitches", ["enable-automation"])
3options.add_experimental_option('useAutomationExtension', False)
4# Μετά την αρχικοποίηση του driver, αφαιρέστε το flag navigator.webdriver
5driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
6 'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
7})
5. Διαχειριστείτε sessions και cookies
Το να διατηρείτε cookies μεταξύ requests κάνει τον scraper να μοιάζει περισσότερο με πραγματική συνεδρία χρήστη:
1session = requests.Session()
2# Επισκεφθείτε πρώτα την αρχική σελίδα για να πάρετε ρεαλιστικά cookies
3session.get("https://www.amazon.com", headers=headers)
4time.sleep(2)
5# Μετά κάντε scrape την επιθυμητή σελίδα
6response = session.get(target_url, headers=headers)
6. Πότε να αποφύγετε εντελώς την ταλαιπωρία
Για όσους δεν θέλουν να διαχειρίζονται τίποτα από αυτά, το cloud scraping του Thunderbit χειρίζεται proxy rotation, rendering και anti-bot μέτρα διαφανώς. Τα scraping APIs επίσης καλύπτουν τις περισσότερες από αυτές τις ανάγκες out of the box. Από την εμπειρία μου, ο χρόνος που ξοδεύεται στο debugging των anti-ban προβλημάτων συχνά ξεπερνά τον χρόνο που ξοδεύεται για να γραφτεί ο ίδιος ο κώδικας scraping — οπότε η λύση «απλώς δουλεύει» έχει πολύ πραγματικό ROI.
Εμπλουτισμός από υποσελίδες: Scraping product detail pages για πιο πλούσια δεδομένα
Η σελίδα λίστας Best Sellers εμφανίζει μόνο βασικά στοιχεία — τίτλο, τιμή, rating, rank. Αλλά η πραγματική αξία για έρευνα FBA βρίσκεται στις επιμέρους product detail pages. Δείτε τι χάνετε αν κάνετε scrape μόνο τη λίστα:
| Πεδίο | Σελίδα Λίστας | Σελίδα Λεπτομερειών Προϊόντος |
|---|---|---|
| Όνομα Προϊόντος | ✅ | ✅ |
| Τιμή | ✅ | ✅ |
| Αξιολόγηση | ✅ | ✅ |
| BSR Rank | ✅ | ✅ (με ranks υποκατηγορίας) |
| Brand | ❌ | ✅ |
| ASIN | ❌ | ✅ |
| Ημερομηνία Πρώτης Διαθεσιμότητας | ❌ | ✅ |
| Διαστάσεις/Βάρος | ❌ | ✅ |
| Αριθμός Πωλητών | ❌ | ✅ |
| Χαρακτηριστικά σε Bullet Points | ❌ | ✅ |
| Ιδιοκτήτης Buy Box | ❌ | ✅ |
Το πεδίο "Date First Available" είναι ιδιαίτερα χρήσιμο — δείχνει πόσο καιρό βρίσκεται ένα προϊόν στην αγορά, κάτι που αποτελεί βασικό σήμα για ανάλυση ανταγωνισμού. Και το να γνωρίζετε τον αριθμό των πωλητών και τον ιδιοκτήτη του Buy Box σας βοηθά να κρίνετε αν αξίζει να μπείτε σε ένα niche προϊόντος (αν το ίδιο το Amazon κρατά πάνω από 30% του Buy Box share, ο ανταγωνισμός είναι εξαιρετικά δύσκολος).
Προσέγγιση με Python: επανάληψη στα product URLs
Αφού συλλέξετε τα URLs των προϊόντων από τη σελίδα λίστας, περάστε από το καθένα με καθυστέρηση:
1for product in products:
2 time.sleep(random.uniform(3, 6))
3 detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
4 detail_soup = BeautifulSoup(detail_response.text, "html.parser")
5 # Extract brand
6 brand_tag = detail_soup.find("a", id="bylineInfo")
7 product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
8 # Extract ASIN from page source or URL
9 # Extract Date First Available from product details table
10 # ... additional fields ...
Μικρή προειδοποίηση: το να χτυπάτε 100 μεμονωμένες product pages αυξάνει σημαντικά τον κίνδυνο μπλοκαρίσματος. Υπολογίστε budget για proxy rotation και μεγαλύτερες καθυστερήσεις.
Προσέγγιση Thunderbit: one-click scraping υποσελίδων
Αφού κάνετε scrape τη σελίδα λίστας σε έναν πίνακα, πατήστε "Scrape Subpages" στο Thunderbit. Το AI επισκέπτεται κάθε product URL και εμπλουτίζει τον πίνακα με επιπλέον στήλες — brand, ASIN, specifications, features — αυτόματα. Χωρίς επιπλέον κώδικα, selectors ή setup. Είναι ιδιαίτερα χρήσιμο για ομάδες e-commerce που χρειάζονται την πλήρη εικόνα για αποφάσεις sourcing, αλλά δεν θέλουν να γράψουν και να συντηρούν parser για detail pages.
Αυτοματοποίηση επαναλαμβανόμενων scrapes: Παρακολούθηση των Best Sellers με την πάροδο του χρόνου
Ένα one-time scrape είναι χρήσιμο, αλλά η συνεχής παρακολούθηση είναι εκεί όπου βρίσκεται το πραγματικό ανταγωνιστικό πλεονέκτημα. Το να βλέπετε ποια προϊόντα ανεβαίνουν και πέφτουν, να πιάνετε τάσεις νωρίς και να παρακολουθείτε μεταβολές τιμών για εβδομάδες ή μήνες — αυτό ξεχωρίζει την απλή έρευνα από τη λήψη αποφάσεων με βάση δεδομένα.
Προσέγγιση με Python: Προγραμματισμός με Cron
Σε Linux/Mac, μπορείτε να προγραμματίσετε το Python script σας με cron. Ορίστε η καταχώριση crontab για καθημερινό scrape στις 8 το πρωί:
10 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Για εβδομαδιαίο scrape κάθε Δευτέρα στις 9 το πρωί:
10 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1
Στα Windows, χρησιμοποιήστε το Task Scheduler για το ίδιο αποτέλεσμα. Για συνεχές scheduling χωρίς να κρατάτε ανοιχτό το laptop, κάντε deploy σε VPS ή AWS Lambda — αν και αυτό προσθέτει πολυπλοκότητα υποδομής.
Προσθέστε logging και ειδοποιήσεις σφαλμάτων για να πιάνετε αποτυχημένες εκτελέσεις. Δεν υπάρχει τίποτα χειρότερο από το να ανακαλύπτετε ότι ο scraper σας χάλασε σιωπηλά πριν από δύο εβδομάδες.
Προσέγγιση Thunderbit: Scheduled Scraper σε απλή γλώσσα
Το Scheduled Scraper του Thunderbit σάς επιτρέπει να περιγράψετε το διάστημα σε φυσική γλώσσα — γράψτε «κάθε Δευτέρα στις 9 π.μ.» ή «κάθε μέρα στις 8 π.μ.» και το AI θα ερμηνεύσει το πρόγραμμα. Τα scrapes εκτελούνται στους cloud servers του Thunderbit (δεν χρειάζεται browser ή υπολογιστής να είναι ανοιχτός), και τα δεδομένα εξάγονται αυτόματα σε Google Sheets ή Airtable. Έτσι δημιουργείτε ένα ζωντανό dashboard παρακολούθησης χωρίς καμία διαχείριση server — ιδανικό για ομάδες operations που θέλουν συνεχή ορατότητα χωρίς το βάρος του DevOps.
Νομικές και ηθικές προεκτάσεις όταν κάνετε scraping στο Amazon
Δεν είμαι δικηγόρος και αυτό δεν αποτελεί νομική συμβουλή. Όμως θα ήταν ανεύθυνο να αγνοήσουμε το νομικό πλαίσιο σε ένα tutorial scraping — οι χρήστες σε forums εκφράζουν ξεκάθαρα ανησυχίες για τους Όρους Χρήσης, και όχι άδικα.
robots.txt του Amazon: Μέχρι το 2026, το robots.txt του Amazon περιέχει πάνω από 80 συγκεκριμένα Disallow paths, αλλά το /gp/bestsellers/ ΔΕΝ μπλοκάρεται ρητά για τυπικούς user agents. Ωστόσο, πάνω από 35 AI-specific user agents (ClaudeBot, GPTBot, Scrapy κ.ά.) λαμβάνουν καθολικό Disallow: /. Το γεγονός ότι δεν υπάρχει συγκεκριμένο disallow δεν σημαίνει ότι το Amazon ενθαρρύνει το scraping.
Όροι Χρήσης του Amazon: Οι του Amazon (ενημερώθηκαν τον Μάιο 2025) απαγορεύουν ρητά τη "χρήση οποιασδήποτε αυτοματοποιημένης διαδικασίας ή τεχνολογίας για πρόσβαση, απόκτηση, αντιγραφή ή παρακολούθηση οποιουδήποτε μέρους του Amazon Website" χωρίς γραπτή άδεια. Αυτό δεν είναι θεωρητικό — το Amazon τον Νοέμβριο 2025 για μη εξουσιοδοτημένη αυτοματοποιημένη πρόσβαση και κέρδισε προσωρινή ασφαλιστική διαταγή.
Το προηγούμενο hiQ v. LinkedIn: Στην υπόθεση (Νοinth Circuit, 2022), το δικαστήριο έκρινε ότι το scraping δημόσια διαθέσιμων δεδομένων πιθανότατα δεν παραβιάζει τον Computer Fraud and Abuse Act. Όμως η hiQ τελικά συμβιβάστηκε και συμφώνησε να σταματήσει το scraping — η νίκη σε CFAA δεν σας προστατεύει από αξιώσεις παραβίασης συμβολαίου.
Πρακτικές οδηγίες:
- Κάνετε scrape μόνο δημόσια διαθέσιμα δεδομένα (τιμές, BSR, τίτλους προϊόντων — όχι προσωπικά δεδομένα)
- Σεβαστείτε τα rate limits και μην υπερφορτώνετε τους servers
- Χρησιμοποιήστε τα δεδομένα για νόμιμη ανταγωνιστική πληροφόρηση
- Συμβουλευτείτε τον δικό σας νομικό σύμβουλο πριν κάνετε scraping σε μεγάλη κλίμακα
- Λάβετε υπόψη ότι έχουν πλέον ολοκληρωμένη νομοθεσία για το απόρρητο
Το cloud scraping του Thunderbit χρησιμοποιεί τυπικά request patterns που μοιάζουν με browser, αλλά θα πρέπει πάντα να ελέγχετε τη συμμόρφωση με τον δικό σας νομικό σύμβουλο.
Ποια μέθοδο να χρησιμοποιήσετε; Γρήγορος οδηγός απόφασης
Η σύντομη εκδοχή:
- «Μαθαίνω Python και θέλω ένα project για το Σαββατοκύριακο.» → Μέθοδος 1 (requests + BeautifulSoup). Θα μάθετε πολλά για HTTP requests, HTML parsing και τα anti-bot μέτρα του Amazon.
- «Χρειάζομαι scraping σε σελίδες με πολύ JavaScript ή sessions με login.» → Μέθοδος 2 (Selenium). Είναι πιο βαριά, αλλά χειρίζεται δυναμικό περιεχόμενο.
- «Τρέχω παραγωγικά scrapes σε μεγάλη κλίμακα.» → Μέθοδος 3 (Scraping API). Αφήστε κάποιον άλλο να διαχειριστεί proxies και rendering. Το ευνοεί τα APIs κάτω από 500K requests/μήνα.
- «Δεν είμαι developer και θέλω δεδομένα σε 2 λεπτά.» → Μέθοδος 4 (). Χωρίς κώδικα, χωρίς selectors, χωρίς συντήρηση.
- «Χρειάζομαι συνεχή παρακολούθηση χωρίς διαχείριση server.» → Thunderbit Scheduled Scraper. Το ορίζετε και τελειώσατε.
Συμπέρασμα και βασικά συμπεράσματα
Μετά από ένα Σαββατοκύριακο δοκιμών, αυτά είναι όσα έμειναν πραγματικά:
requests + BeautifulSoup είναι εξαιρετικά για εκμάθηση, αλλά ο περιορισμός του lazy loading (μόνο ~30 από τα 50 προϊόντα) και τα εύθραυστα CSS selectors το κάνουν μη πρακτικό για παραγωγική χρήση.
Selenium λύνει το πρόβλημα του lazy loading και πιάνει και τα 50 προϊόντα ανά σελίδα, αλλά είναι αργό, καταναλώνει πολλή μνήμη και εξακολουθεί να ανιχνεύεται από τα bot defenses του Amazon.
Τα Scraping APIs προσφέρουν την καλύτερη αξιοπιστία για scraping σε επίπεδο παραγωγής — στο Amazon — αλλά το κόστος ανεβαίνει και εξακολουθείτε να χρειάζεστε parsing code.
Το Thunderbit έδωσε τον ταχύτερο χρόνο μέχρι τα δεδομένα με μεγάλη διαφορά. Το AI χειρίζεται αλλαγές layout, lazy loading, pagination και anti-bot μέτρα χωρίς καμία ρύθμιση. Για μη τεχνικούς χρήστες ή ομάδες που χρειάζονται επαναλαμβανόμενα δεδομένα χωρίς DevOps βάρος, είναι η πιο πρακτική επιλογή.
Το μεγαλύτερο μάθημα; Τα συστήματα anti-bot του Amazon και οι συχνές αλλαγές στο layout σημαίνουν ότι οι λύσεις χωρίς συντήρηση εξοικονομούν τον περισσότερο χρόνο μακροπρόθεσμα. Κάθε ώρα που ξοδεύετε διορθώνοντας selectors που έσπασαν και αλλάζοντας proxies είναι μία ώρα που δεν την ξοδεύετε στην πραγματική ανάλυση.
Θέλετε να δοκιμάσετε την no-code προσέγγιση; Το σας δίνει αρκετά credits για να κάνετε scrape μερικές κατηγορίες Best Sellers και να δείτε τα αποτελέσματα μόνοι σας. Προτιμάτε τη διαδρομή της Python; Τα παραδείγματα κώδικα παραπάνω θα σας βάλουν σε κίνηση. Όπως και να έχει, θα έχετε τα δεδομένα των Amazon Best Sellers σε spreadsheet αντί να κοιτάτε απλώς μια καρτέλα browser.
Για περισσότερα σχετικά με approaches στο web scraping, δείτε τους οδηγούς μας για , και . Μπορείτε επίσης να παρακολουθήσετε αναλυτικά walkthroughs στο .
Μάθετε περισσότερα