Εξαγωγή δεδομένων IMDb με Python: Κώδικας που πραγματικά δουλεύει

Τελευταία ενημέρωση στις April 28, 2026

Αν τελευταία έχεις ψάξει για «Εξαγωγή δεδομένων IMDb με Python», μάλλον θα έχεις διαπιστώσει κάτι: τα περισσότερα tutorials που θα βρεις είναι χαλασμένα. Όχι απλώς «λίγο ξεπερασμένα» — περισσότερο του τύπου «επιστρέφει μηδενικά αποτελέσματα και ένα τείχος από σφάλματα NoneType» χαλασμένα.

Τις τελευταίες εβδομάδες δοκίμασα κάθε σημαντικό tutorial για εξαγωγή δεδομένων από το IMDb που μπόρεσα να βρω — GeeksforGeeks, Medium, freeCodeCamp, notebooks στο Kaggle, ό,τι θες. Από τα που έχουν ετικέτα για εξαγωγή δεδομένων IMDb, η συντριπτική πλειονότητα παραπέμπει σε CSS selectors (td.titleColumn, td.ratingColumn) που δεν υπάρχουν από τον Ιούνιο του 2023, όταν το IMDb ανασχεδίασε τη σελίδα Top 250. Το αποτέλεσμα; Φόρουμ γεμάτα με προγραμματιστές που ρωτούν «γιατί ο κώδικάς μου επιστρέφει κενό;» και συντηρητές δημοφιλών βιβλιοθηκών όπως το ότι «δεν μπορούμε να κάνουμε και πολλά, πέρα από το να διορθώνουμε κάθε parser». Αυτός ο οδηγός καλύπτει δύο μεθόδους Python που όντως δουλεύουν αυτή τη στιγμή, πώς να χειριστείς σελιδοποίηση και συνηθισμένα σφάλματα, πότε η Python δεν είναι καν το σωστό εργαλείο και πώς να κάνεις τον scraper σου πιο ανθεκτικό, ώστε να μην καταλήξει στο νεκροταφείο.

Τι σημαίνει να κάνεις εξαγωγή δεδομένων από το IMDb με Python;

Το web scraping είναι η διαδικασία κατά την οποία εξάγεις δεδομένα από ιστοσελίδες με προγραμματισμένο τρόπο — αντί να κάνεις χειροκίνητα αντιγραφή και επικόλληση, γράφεις ένα script που το κάνει για σένα. Όταν μιλάμε για «εξαγωγή δεδομένων από το IMDb», εννοούμε να τραβάμε δομημένα δεδομένα ταινιών (τίτλους, αξιολογήσεις, είδη, cast, διάρκεια, αριθμό ψήφων) από τις σελίδες του IMDb χρησιμοποιώντας Python.

Το τυπικό Python stack για αυτό περιλαμβάνει τρεις βιβλιοθήκες: requests (για να φέρνεις την ιστοσελίδα), BeautifulSoup (για να αναλύεις το HTML και να βρίσκεις τα δεδομένα) και pandas (για να οργανώνεις και να εξάγεις τα αποτελέσματα). Κάποια tutorials χρησιμοποιούν επίσης Selenium ή Playwright για σελίδες που απαιτούν απόδοση JavaScript, αλλά όπως θα δεις, υπάρχουν πιο γρήγορες προσεγγίσεις.

Μια σημαντική διευκρίνιση: όλα σε αυτόν τον οδηγό έχουν επαληθευτεί απέναντι στην τρέχουσα δομή της σελίδας του IMDb, όπως ίσχυε στα μέσα του 2025. Το IMDb αλλάζει πράγματα περίπου κάθε 6–12 μήνες, οπότε αν το διαβάζεις το 2027, κάποιοι selectors μπορεί να έχουν μετακινηθεί. (Θα εξηγήσω και πώς το χειρίζεσαι αυτό.)

Γιατί να κάνεις εξαγωγή δεδομένων από το IMDb με Python; Πραγματικές χρήσεις

Πριν γράψεις ούτε μία γραμμή κώδικα, τι θα έκανες στην πράξη με τα δεδομένα του IMDb; Η απάντηση εξαρτάται από το ποιος είσαι.

Το σύνολο δεδομένων αξιολογήσεων του IMDb είναι ένα από τα πιο ευρέως χρησιμοποιούμενα benchmarks NLP στον κόσμο — η θεμελιώδης εργασία των Maas et al. (2011) έχει συγκεντρώσει , και το dataset είναι ενσωματωμένο στο TensorFlow, το Keras και το PyTorch. Στο Hugging Face, το dataset stanfordnlp/imdb παίρνει 213.321 λήψεις τον μήνα και έχει χρησιμοποιηθεί για την εκπαίδευση πάνω από 1.500 μοντέλων. Άρα, αν ασχολείσαι με machine learning, πιθανότατα ήδη γνωρίζεις τα δεδομένα του IMDb.

Αλλά οι χρήσεις εκτείνονται πολύ πέρα από την ακαδημαϊκή έρευνα:

ΧρήσηΓια ποιον είναιΑπαιτούμενα πεδία δεδομένων
Μηχανή προτάσεων ταινιώνData scientists, hobbyistsΤίτλοι, είδη, αξιολογήσεις, cast
Στρατηγική περιεχομένου για πλατφόρμες streamingΟμάδες προϊόντος/περιεχομένουΑξιολογήσεις, ψήφοι, έτος κυκλοφορίας, είδη
Ανάλυση συναισθήματος / εκπαίδευση NLPΕρευνητές ML, φοιτητέςΚριτικές, αξιολογήσεις
Ανάλυση ανταγωνιστικού περιεχομένουΑναλυτές της βιομηχανίας ψυχαγωγίαςΕισπράξεις, ημερομηνίες κυκλοφορίας, τάσεις αξιολογήσεων
Έρευνα τουρισμού κινηματογράφουΟργανισμοί τουρισμού, ταξιδιωτικές εταιρείεςΤοποθεσίες γυρισμάτων, δείκτες δημοτικότητας
Ακαδημαϊκή έρευναΠανεπιστημιακοί ερευνητέςΟποιοδήποτε δομημένο μεταδεδομένο ταινιών

Μόνο η αγορά του τουρισμού κινηματογράφου αποτιμάται κατά προσέγγιση σε . Η Netflix δαπάνησε πάνω από 17 δισ. δολάρια για περιεχόμενο το 2024, με το να προκύπτει από εξατομικευμένες προτάσεις. Το νόημα είναι ότι τα δεδομένα του IMDb τροφοδοτούν πραγματικές αποφάσεις σε πολλούς κλάδους.

Οι επιλογές σου για να πάρεις δεδομένα από το IMDb (πριν γράψεις έστω μία γραμμή κώδικα)

Αυτή είναι η ενότητα που τα περισσότερα tutorials προσπερνούν εντελώς. Πηδάνε κατευθείαν στο pip install beautifulsoup4 χωρίς να ρωτήσουν αν το scraping με Python είναι πράγματι η σωστή προσέγγιση για τη δική σου περίπτωση.

Ορίστε το πλήρες τοπίο:

ΔιαδρομήΚαλύτερη γιαΠλεονεκτήματαΜειονεκτήματα
Python + BeautifulSoupΕκμάθηση, προσαρμοσμένη εξαγωγήΑπόλυτος έλεγχος, ευελιξίαΕύθραυστοι selectors, σπάνε συχνά
Εξαγωγή από JSON-LD / __NEXT_DATA__Προγραμματιστές που θέλουν σταθερότηταΧειρίζεται περιεχόμενο JS, πιο ανθεκτικόΑπαιτεί κατανόηση της δομής JSON
IMDb Official DatasetsΑνάλυση μεγάλης κλίμακας, ακαδημαϊκή χρήσηΝόμιμο, πλήρες, 26M+ τίτλοι, καθημερινές ενημερώσειςΜορφή TSV, χωρίς κριτικές/εικόνες
Βιβλιοθήκη Cinemagoer (IMDbPY)Προγραμματισμένες αναζητήσεις ανά τίτλοPythonic API, πλούσια πεδία88 ανοιχτά θέματα, τελευταία έκδοση Μάιος 2023
TMDb APIΜεταδεδομένα ταινιών + εικόνεςΔωρεάν API key, JSON, καλά τεκμηριωμένοΔιαφορετική πηγή (όχι αξιολογήσεις IMDb)
Thunderbit (χωρίς κώδικα)Μη τεχνικούς χρήστες, γρήγορες εξαγωγέςΕξαγωγή σε 2 κλικ, η AI προτείνει πεδία, εξαγωγή σε Excel/SheetsΜε χρήση credits για μεγάλης κλίμακας εξαγωγές

Μερικές σημειώσεις για αυτές τις επιλογές. Το Cinemagoer δεν είχε έκδοση στο PyPI από τον Μάιο του 2023 και οι περισσότεροι parsers του χάλασαν μετά τον ανασχεδιασμό του IMDb τον Ιούνιο του 2025 — δεν θα το πρότεινα για παραγωγική χρήση αυτή τη στιγμή. Το TMDb είναι εξαιρετικό, αλλά χρησιμοποιεί δικό του σύστημα αξιολόγησης, όχι του IMDb. Και το επίσημο enterprise API του IMDb κοστίζει μέσω του AWS Data Exchange, οπότε δεν είναι επιλογή για τους περισσότερους από εμάς.

Για αναγνώστες που δεν θέλουν να γράψουν καθόλου κώδικα, ο διαβάζει τη σελίδα του IMDb, προτείνει αυτόματα πεδία εξαγωγής (τίτλος, βαθμολογία, έτος, είδος) και εξάγει σε Excel, Google Sheets, Airtable ή Notion σε δύο κλικ. Η AI προσαρμόζεται όταν το IMDb αλλάζει τη διάταξή του, άρα δεν υπάρχουν selectors για συντήρηση. Περισσότερα γι’ αυτό αργότερα.

Τώρα, για όσους θέλουν όντως να γράψουν Python — ορίστε δύο μέθοδοι που δουλεύουν.

Μέθοδος 1: Εξαγωγή δεδομένων από το IMDb με Python χρησιμοποιώντας BeautifulSoup (παραδοσιακή προσέγγιση)

Αυτή είναι η κλασική προσέγγιση που θα βρεις στα περισσότερα tutorials. Δουλεύει, αλλά θέλω να είμαι ειλικρινής: είναι η πιο εύθραυστη από τις μεθόδους που θα καλύψω. Τα CSS class names του IMDb δημιουργούνται αυτόματα και αλλάζουν με τους ανασχεδιασμούς. Παρ’ όλα αυτά, είναι ο καλύτερος τρόπος για να μάθεις τα θεμέλια του web scraping.

Βήμα 1: Εγκατάσταση και import των βιβλιοθηκών Python

Χρειάζεσαι τέσσερα πακέτα:

1pip install requests beautifulsoup4 pandas lxml

Τι κάνει το καθένα:

  • requests — στέλνει HTTP requests για να φέρει την ιστοσελίδα
  • beautifulsoup4 — αναλύει το HTML ώστε να μπορείς να αναζητήσεις συγκεκριμένα στοιχεία
  • pandas — οργανώνει τα εξαγόμενα δεδομένα σε πίνακες και τα εξάγει σε CSV/Excel
  • lxml — ένας γρήγορος HTML parser (το BeautifulSoup μπορεί να τον χρησιμοποιήσει ως backend)

Το import block σου:

1import requests
2from bs4 import BeautifulSoup
3import pandas as pd

Βήμα 2: Στείλε ένα HTTP request στο IMDb

Εδώ είναι που οι περισσότεροι αρχάριοι συναντούν το πρώτο τους εμπόδιο. Το IMDb μπλοκάρει requests που δεν περιλαμβάνουν σωστό header User-Agent — θα πάρεις σφάλμα 403 Forbidden. Η προεπιλεγμένη συμβολοσειρά user-agent του Python Requests (python-requests/2.31.0) σηματοδοτείται αμέσως.

1url = "https://www.imdb.com/chart/top/"
2headers = {
3    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
4    "Accept-Language": "en-US,en;q=0.9"
5}
6response = requests.get(url, headers=headers)
7if response.status_code != 200:
8    print(f"Αποτυχία λήψης της σελίδας: {response.status_code}")
9else:
10    print("Η σελίδα λήφθηκε με επιτυχία")

Το header Accept-Language επίσης έχει σημασία — χωρίς αυτό, το IMDb μπορεί να επιστρέψει περιεχόμενο σε διαφορετική γλώσσα, ανάλογα με τη γεωγραφική τοποθεσία της IP σου.

Βήμα 3: Ανάλυση του HTML με BeautifulSoup

Μόλις έχεις το HTML, δημιούργησε ένα αντικείμενο BeautifulSoup και ξεκίνα να ψάχνεις τα σωστά στοιχεία. Άνοιξε τη σελίδα Top 250 του IMDb στο Chrome, κάνε δεξί κλικ σε έναν τίτλο ταινίας και επίλεξε «Inspect» για να δεις τη βασική δομή HTML.

1soup = BeautifulSoup(response.text, "lxml")

Στα μέσα του 2025, η σελίδα Top 250 χρησιμοποιεί αυτούς τους selectors:

  • Περιέκτης ταινίας: li.ipc-metadata-list-summary-item
  • Τίτλος: h3.ipc-title__text
  • Έτος: span.cli-title-metadata-item (πρώτο span)
  • Αξιολόγηση: span.ipc-rating-star--rating

Προσοχή: αυτά τα class names με πρόθεμα ipc- δημιουργούνται από το σύστημα component του IMDb. Παρέμειναν σταθερά από τον ανασχεδιασμό του Ιουνίου 2023, αλλά δεν υπάρχει καμία εγγύηση ότι δεν θα αλλάξουν ξανά.

Βήμα 4: Εξαγωγή δεδομένων ταινιών (τίτλος, έτος, αξιολόγηση)

Εδώ διαφέρω από τα περισσότερα tutorials: συμπεριλαμβάνω χειρισμό σφαλμάτων try/except. Κανένας από τους ανταγωνιστικούς οδηγούς που εξέτασα δεν το κάνει αυτό, και ακριβώς γι’ αυτό ο κώδικάς τους σπάει αθόρυβα όταν αλλάζει ένας selector.

1movies = []
2movie_items = soup.select("li.ipc-metadata-list-summary-item")
3for item in movie_items:
4    try:
5        title_tag = item.select_one("h3.ipc-title__text")
6        title = title_tag.text.strip() if title_tag else "N/A"
7        year_tag = item.select_one("span.cli-title-metadata-item")
8        year = year_tag.text.strip() if year_tag else "N/A"
9        rating_tag = item.select_one("span.ipc-rating-star--rating")
10        rating = rating_tag.text.strip() if rating_tag else "N/A"
11        movies.append({
12            "title": title,
13            "year": year,
14            "rating": rating
15        })
16    except Exception as e:
17        print(f"Σφάλμα κατά την ανάλυση ταινίας: {e}")
18        continue
19print(f"Εξήχθησαν {len(movies)} ταινίες")

Βήμα 5: Αποθήκευση σε CSV ή Excel με Pandas

1df = pd.DataFrame(movies)
2df.to_csv("imdb_top_250.csv", index=False)
3df.to_excel("imdb_top_250.xlsx", index=False)
4print(df.head())

Δείγμα εξόδου:

1                          title  year rating
20  1. Η Λίστα του Σίντλερ      1994    9.3
31           2. Ο Νονός         1972    9.2
42     3. The Dark Knight       2008    9.0
53  4. Ο Νονός: Μέρος II        1974    9.0
64         5. 12 Angry Men      1957    9.0

Αυτό δουλεύει. Αλλά στηρίζεται σε CSS selectors που μπορεί να σπάσουν οποιαδήποτε μέρα — και αυτό μας οδηγεί στην προσέγγιση που πραγματικά προτείνω.

Μέθοδος 2: Το κόλπο με JSON-LD — παράκαμψε εντελώς το HTML parsing

Αυτή είναι η τεχνική που δεν καλύπτει κανένα ανταγωνιστικό άρθρο, και είναι αυτή που θα χρησιμοποιούσα για οποιοδήποτε σοβαρό project. Το IMDb ενσωματώνει δομημένα δεδομένα ως (JavaScript Object Notation for Linked Data) σε tags <script type="application/ld+json"> σε κάθε σελίδα. Αυτά τα δεδομένα ακολουθούν το πρότυπο Schema.org, χρησιμοποιούνται από την Google για rich search results και αλλάζουν πολύ λιγότερο συχνά από τα CSS class names.

Το Apify IMDb Scraper, ένα εργαλείο παραγωγικού επιπέδου, χρησιμοποιεί την εξής σειρά προτεραιότητας εξαγωγής: «JSON-LD > NEXT_DATA > DOM». Αυτή είναι και η ιεραρχία που θα πρότεινα.

Γιατί το JSON-LD είναι πιο αξιόπιστο από τους CSS selectors

ΠροσέγγισηΧειρίζεται περιεχόμενο JS;Ανθεκτική σε αλλαγές UI;ΤαχύτηταΠολυπλοκότητα
BeautifulSoup + CSS selectors❌ Όχι⚠️ Εύθραυστη (τα class names αλλάζουν)ΓρήγορηΧαμηλή
Εξαγωγή JSON-LD✅ Ναι✅ Ακολουθεί το πρότυπο Schema.orgΓρήγορηΧαμηλή-Μεσαία
Εξαγωγή JSON από __NEXT_DATA__✅ Ναι✅ Αρκετά σταθερήΓρήγορηΧαμηλή-Μεσαία
Selenium / Playwright✅ Ναι⚠️ ΕύθραυστηΑργήΜεσαία-Υψηλή
Thunderbit (χωρίς κώδικα, 2 κλικ)✅ Ναι (η AI διαβάζει τη σελίδα)✅ Η AI προσαρμόζεται αυτόματαΓρήγορηΚαμία

CSS class names όπως το ipc-metadata-list-summary-item δημιουργούνται αυτόματα από το σύστημα React component του IMDb και αλλάζουν με κάθε ανασχεδιασμό. Το schema JSON-LD αναπαριστά το πραγματικό μοντέλο δεδομένων, όχι το οπτικό layer. Είναι σαν τη διαφορά ανάμεσα στο να διαβάζεις τον πίνακα περιεχομένων ενός βιβλίου και στο να προσπαθείς να αναγνωρίσεις τα κεφάλαια από το μέγεθος της γραμματοσειράς τους.

css-selectors-vs-json-ld.webp

Βήμα προς βήμα: Εξαγωγή δεδομένων IMDb από JSON-LD

Βήμα 1: Φέρε τη σελίδα

Όπως πριν — χρησιμοποίησε requests με σωστό header User-Agent.

1import requests
2from bs4 import BeautifulSoup
3import json
4import pandas as pd
5url = "https://www.imdb.com/chart/top/"
6headers = {
7    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
8    "Accept-Language": "en-US,en;q=0.9"
9}
10response = requests.get(url, headers=headers)
11soup = BeautifulSoup(response.text, "lxml")

Βήμα 2: Βρες το script tag του JSON-LD

1script_tag = soup.find("script", {"type": "application/ld+json"})
2if not script_tag:
3    print("Δεν βρέθηκε JSON-LD σε αυτή τη σελίδα")
4else:
5    data = json.loads(script_tag.string)
6    print(f"Βρέθηκε JSON-LD με τύπο: {data.get('@type', 'άγνωστος')}")

Βήμα 3: Ανάλυσε τα δομημένα δεδομένα

Στη σελίδα Top 250, το JSON-LD περιέχει έναν πίνακα itemListElement με όλες τις 250 ταινίες. Κάθε καταχώριση περιλαμβάνει θέση, όνομα, URL, aggregateRating, datePublished, genre, description, director και πίνακες actor.

1movies = []
2for item in data.get("itemListElement", []):
3    movie = item.get("item", {})
4    rating_info = movie.get("aggregateRating", {})
5    movies.append({
6        "rank": item.get("position"),
7        "title": movie.get("name"),
8        "url": movie.get("url"),
9        "rating": rating_info.get("ratingValue"),
10        "vote_count": rating_info.get("ratingCount"),
11        "date_published": movie.get("datePublished"),
12        "genre": ", ".join(movie.get("genre", [])),
13        "description": movie.get("description"),
14    })

Βήμα 4: Εξαγωγή σε CSV

1df = pd.DataFrame(movies)
2df.to_csv("imdb_top_250_json_ld.csv", index=False)
3print(df.head())

Δείγμα εξόδου:

1   rank                      title                                     url  rating  vote_count date_published              genre
20     1  The Shawshank Redemption  https://www.imdb.com/title/tt0111161/     9.3     2900000     1994-10-14     Drama
31     2            The Godfather   https://www.imdb.com/title/tt0068646/     9.2     2000000     1972-03-24     Crime, Drama
42     3          The Dark Knight   https://www.imdb.com/title/tt0468569/     9.0     2800000     2008-07-18     Action, Crime, Drama

Και οι 250 ταινίες. Καθαρά, δομημένα, χωρίς ακροβατικά με CSS selectors. Και επειδή αυτά τα δεδομένα ακολουθούν το πρότυπο Schema.org (στο οποίο βασίζεται η Google για τα αποτελέσματα αναζήτησης), είναι πολύ λιγότερο πιθανό να αλλάξουν από ό,τι η οπτική διάταξη.

Μπόνους: __NEXT_DATA__ για ατομικές σελίδες ταινιών

Για πιο πλούσια δεδομένα από μεμονωμένες σελίδες τίτλων (διάρκεια, πλήρες cast, σύνοψη πλοκής, εικόνες αφίσας), το IMDb ενσωματώνει επίσης ένα αντικείμενο JSON __NEXT_DATA__. Αυτά είναι τα δεδομένα που χρησιμοποιεί το React για να «ζωντανέψει» τη σελίδα — δεν μπορούν να αφαιρεθούν χωρίς να σπάσει ο ιστότοπος.

1# Σε μια μεμονωμένη σελίδα ταινίας όπως /title/tt0111161/
2next_data_tag = soup.find("script", {"id": "__NEXT_DATA__"})
3if next_data_tag:
4    next_data = json.loads(next_data_tag.string)
5    above_fold = next_data["props"]["pageProps"]["aboveTheFoldData"]
6    title = above_fold["titleText"]["text"]
7    year = above_fold["releaseYear"]["year"]
8    rating = above_fold["ratingsSummary"]["aggregateRating"]
9    runtime_seconds = above_fold.get("runtime", {}).get("seconds", 0)
10    genres = [g["text"] for g in above_fold["genres"]["genres"]]
11    plot = above_fold["plot"]["plotText"]["plainText"]

Χρησιμοποίησε JSON-LD για σελίδες λιστών/διαγραμμάτων, __NEXT_DATA__ για μεμονωμένες σελίδες τίτλων. Αυτή είναι η παραγωγική προσέγγιση.

Γιατί ο IMDb scraper σου συνεχίζει να σπάει (και πώς να το διορθώσεις)

Αυτό είναι το πιο συχνά αναφερόμενο πρόβλημα σε όλα τα φόρουμ εξαγωγής δεδομένων από το IMDb που έλεγξα. Οι χρήστες γράφουν: «Κάποιος από τον κώδικα χάλασε λόγω αλλαγών στο UI» και «Δεν λειτουργεί το 2024!» — και η απάντηση συνήθως είναι σιωπή ή «δοκίμασε Selenium».

Η βασική αιτία είναι η συνεχιζόμενη μετάβαση του IMDb σε frontend με React/Next.js. Ορίστε το χρονολόγιο των μεγάλων αλλαγών που έσπασαν πράγματα:

ΗμερομηνίαΤι άλλαξεΤι χάλασε
Νοέμ. 2022Ανασχεδιασμός Name PagesΟι παλιοί scrapers για name pages
Ιούν. 2023Ανασχεδιασμός της σελίδας Top 250Όλοι οι selectors td.titleColumn / td.ratingColumn
Απρ. 2023Ανασχεδιασμός subpages τίτλωνScrapers για βιογραφικά, βραβεία, ειδήσεις
Οκτ. 2023Ανασχεδιασμός Advanced SearchScrapers που βασίζονται στην αναζήτηση
Ιούν. 2025Ανασχεδιασμός σελίδων /referenceΒιβλιοθήκη Cinemagoer (οι περισσότεροι parsers)

Αυτό σημαίνει περίπου μία μεγάλη αλλαγή που σπάει πράγματα κάθε 6–12 μήνες. Αν ο scraper σου βασίζεται σε CSS class names, είσαι σε διάδρομο γυμναστικής χωρίς τέλος.

Συνηθισμένα σφάλματα και πώς να τα διορθώσεις

Κενά αποτελέσματα / σφάλματα NoneType

Το πιο συνηθισμένο σφάλμα. Θα δεις AttributeError: 'NoneType' object has no attribute 'text'. Αυτό σημαίνει ότι το BeautifulSoup δεν βρήκε το στοιχείο που ψάχνεις — συνήθως επειδή άλλαξε το CSS class name ή επειδή το περιεχόμενο αποδίδεται από JavaScript.

Διόρθωση: Μετάβαση σε εξαγωγή JSON-LD (Μέθοδος 2 παραπάνω). Τα δεδομένα βρίσκονται στην αρχική HTML απάντηση, χωρίς να χρειάζεται JavaScript.

403 Forbidden

Το IMDb χρησιμοποιεί το για να ανιχνεύει και να μπλοκάρει bots. Ο νούμερο 1 λόγος είναι ένα ελλιπές ή προφανώς ψεύτικο header User-Agent. Αυτό έχει καταγραφεί σε ανοιχτά projects και , όπου υπάλληλος του IMDb αναγνώρισε το πρόβλημα.

Διόρθωση: Συμπεριέλαβε πάντα ένα ρεαλιστικό browser User-Agent string και το header Accept-Language: en-US. Χρησιμοποίησε requests.Session() για connection pooling.

Επιστρέφονται μόνο 25 αποτελέσματα

Οι σελίδες αναζήτησης και οι λίστες «Most Popular» του IMDb χρησιμοποιούν lazy loading — αρχικά αποδίδουν μόνο περίπου 25 αποτελέσματα και φορτώνουν περισσότερα μέσω AJAX καθώς κάνεις scroll.

Διόρθωση: Χρησιμοποίησε σελιδοποίηση με παραμέτρους URL (θα το καλύψω στην επόμενη ενότητα) ή πέρασε στη σελίδα Top 250, η οποία φορτώνει όλες τις 250 ταινίες σε μία μόνο απάντηση.

Οι selectors σταματούν ξαφνικά να δουλεύουν

Παλιοί selectors που δεν δουλεύουν πια: td.titleColumn, td.ratingColumn, .lister-item-header, .inline-block.ratings-imdb-rating. Αν ο κώδικάς σου χρησιμοποιεί κάποιον από αυτούς, είναι χαλασμένος.

Διόρθωση: Προτίμησε attributes data-testid (όπως h1[data-testid="hero-title-block__title"]) αντί για αυτόματα παραγόμενα class names. Ακόμα καλύτερα, χρησιμοποίησε JSON-LD.

Ένα πλαίσιο απόφασης: βραχυπρόθεσμες vs. μακροπρόθεσμες διορθώσεις

  • Γρήγορη διόρθωση: Πρόσθεσε μπλοκ try/except γύρω από κάθε selector, έλεγξε τα HTTP status codes, κάνε log τα σφάλματα αντί να τερματίζεις
  • Μεσοπρόθεσμη διόρθωση: Πέρασε από CSS selectors σε εξαγωγή JSON-LD (Μέθοδος 2)
  • Μακροπρόθεσμη διόρθωση: Χρησιμοποίησε τα για ανάλυση μεγάλης κλίμακας ή ένα εργαλείο όπως το που χρησιμοποιεί AI για να ξαναδιαβάζει φρέσκα τη δομή της σελίδας κάθε φορά — χωρίς selectors για συντήρηση, καθώς η AI προσαρμόζεται αυτόματα στις αλλαγές διάταξης

Πέρα από τον τοίχο των 25 αποτελεσμάτων: εξαγωγή σελιδοποίησης και μεγάλων συνόλων δεδομένων από το IMDb

Κάθε ανταγωνιστικό tutorial που εξέτασα κάνει εξαγωγή ακριβώς μίας σελίδας. Κανένα δεν καλύπτει τη σελιδοποίηση. Αλλά αν χρειάζεσαι περισσότερα από μία λίστα, θα χτυπήσεις γρήγορα σε τοίχους.

Σελίδες που δεν χρειάζονται σελιδοποίηση

Καλά νέα: η σελίδα Top 250 φορτώνει και τις 250 ταινίες σε μία μόνο server-rendered απάντηση. Τanto το JSON-LD όσο και το __NEXT_DATA__ περιέχουν το πλήρες dataset. Δεν χρειάζεται σελιδοποίηση.

Πώς λειτουργεί η σελιδοποίηση αναζήτησης του IMDb

Οι σελίδες αναζήτησης του IMDb χρησιμοποιούν τη παράμετρο URL start=, αυξανόμενη κατά 50:

1https://www.imdb.com/search/title/?groups=top_1000&start=1
2https://www.imdb.com/search/title/?groups=top_1000&start=51
3https://www.imdb.com/search/title/?groups=top_1000&start=101

Ορίστε ένας βρόχος Python που περνάει από τα αποτελέσματα:

1import time
2all_movies = []
3for start in range(1, 1001, 50):  # Σελιδοποιεί το top 1000
4    url = f"https://www.imdb.com/search/title/?groups=top_1000&start={start}"
5    response = requests.get(url, headers=headers)
6    if response.status_code != 200:
7        print(f"Αποτυχία στο start={start}: {response.status_code}")
8        break
9    soup = BeautifulSoup(response.text, "lxml")
10    # Εξήγαγε ταινίες χρησιμοποιώντας τη μέθοδο που προτιμάς
11    # ...
12    print(f"Εξήχθη η σελίδα που ξεκινά από {start}")
13    time.sleep(3)  # Να είσαι ευγενικός — το IMDb μπλοκάρει μετά από ~50 γρήγορα requests

Αυτό το time.sleep(3) έχει σημασία. Αναφορές από την κοινότητα δείχνουν ότι το IMDb αρχίζει να μπλοκάρει IPs μετά από περίπου 50 γρήγορα requests. Μια τυχαία καθυστέρηση μεταξύ 2–5 δευτερολέπτων είναι καλή πρακτική.

Πότε να παρακάμψεις εντελώς το scraping: τα επίσημα bulk datasets του IMDb

Για πραγματικά μεγάλες ανάγκες, το IMDb προσφέρει 7 δωρεάν αρχεία TSV στο , που ανανεώνονται καθημερινά:

ΑρχείοΠεριεχόμενοΜέγεθος
title.basics.tsv.gzΤίτλοι, τύποι, είδη, διάρκεια, έτος~800 MB
title.ratings.tsv.gzΜέση αξιολόγηση, αριθμός ψήφων~25 MB
title.crew.tsv.gzΣκηνοθέτες, σεναριογράφοι~300 MB
title.principals.tsv.gzΚορυφαίο cast/crew~2 GB
title.akas.tsv.gzΕναλλακτικοί τίτλοι ανά περιοχή~1.5 GB
title.episode.tsv.gzΠληροφορίες επεισοδίων τηλεόρασης~200 MB
name.basics.tsv.gzΆτομα: όνομα, έτος γέννησης, γνωστοί τίτλοι~700 MB

Η φόρτωσή τους στο Pandas είναι απλή:

1ratings = pd.read_csv("title.ratings.tsv.gz", sep="\t", compression="gzip")
2basics = pd.read_csv("title.basics.tsv.gz", sep="\t", compression="gzip", low_memory=False)
3# Συνένωση με βάση το tconst (IMDb title ID)
4merged = basics.merge(ratings, on="tconst")
5top_movies = merged[merged["titleType"] == "movie"].nlargest(250, "averageRating")

Αυτά τα datasets καλύπτουν πάνω από 26 εκατομμύρια τίτλους. Χωρίς σελιδοποίηση, χωρίς selectors, χωρίς σφάλματα 403. Η άδεια χρήσης είναι μόνο για προσωπική και μη εμπορική χρήση — δεν μπορείς να αναδημοσιεύσεις ή να μεταπωλήσεις τα δεδομένα.

Η συντόμευση χωρίς κώδικα: το Thunderbit χειρίζεται τη σελιδοποίηση για σένα

Για αναγνώστες που χρειάζονται δεδομένα IMDb με σελιδοποίηση αλλά δεν θέλουν να γράψουν λογική σελιδοποίησης, το υποστηρίζει εγγενώς και σελιδοποίηση με κλικ και infinite scroll. Του λες να κάνει εξαγωγή, και αναλαμβάνει τα υπόλοιπα — συμπεριλαμβανομένης της κύλισης μέσα σε περιεχόμενο που φορτώνει αργά.

Εξαγωγή δεδομένων IMDb με Python: ο πλήρης λειτουργικός κώδικας (έτοιμος για αντιγραφή-επικόλληση)

Ορίστε δύο αυτοτελή scripts που μπορείς να τρέξεις τώρα αμέσως.

Script A: Μέθοδος BeautifulSoup (CSS selectors)

1import requests
2from bs4 import BeautifulSoup
3import pandas as pd
4url = "https://www.imdb.com/chart/top/"
5headers = {
6    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
7    "Accept-Language": "en-US,en;q=0.9"
8}
9response = requests.get(url, headers=headers)
10if response.status_code != 200:
11    print(f"Σφάλμα: {response.status_code}")
12    exit()
13soup = BeautifulSoup(response.text, "lxml")
14movie_items = soup.select("li.ipc-metadata-list-summary-item")
15movies = []
16for item in movie_items:
17    try:
18        title = item.select_one("h3.ipc-title__text")
19        year = item.select_one("span.cli-title-metadata-item")
20        rating = item.select_one("span.ipc-rating-star--rating")
21        movies.append({
22            "title": title.text.strip() if title else "N/A",
23            "year": year.text.strip() if year else "N/A",
24            "rating": rating.text.strip() if rating else "N/A",
25        })
26    except Exception as e:
27        print(f"Παράλειψη ταινίας λόγω σφάλματος: {e}")
28df = pd.DataFrame(movies)
29df.to_csv("imdb_top250_bs4.csv", index=False)
30print(f"Αποθηκεύτηκαν {len(df)} ταινίες")
31print(df.head())

Script B: Μέθοδος JSON-LD (προτεινόμενη)

1import requests
2from bs4 import BeautifulSoup
3import json
4import pandas as pd
5url = "https://www.imdb.com/chart/top/"
6headers = {
7    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
8    "Accept-Language": "en-US,en;q=0.9"
9}
10response = requests.get(url, headers=headers)
11if response.status_code != 200:
12    print(f"Σφάλμα: {response.status_code}")
13    exit()
14soup = BeautifulSoup(response.text, "lxml")
15script_tag = soup.find("script", {"type": "application/ld+json"})
16if not script_tag:
17    print("Δεν βρέθηκαν δεδομένα JSON-LD")
18    exit()
19data = json.loads(script_tag.string)
20movies = []
21for item in data.get("itemListElement", []):
22    movie = item.get("item", {})
23    rating_info = movie.get("aggregateRating", {})
24    directors = movie.get("director", [])
25    director_names = ", ".join(
26        d.get("name", "") for d in (directors if isinstance(directors, list) else [directors])
27    )
28    movies.append({
29        "rank": item.get("position"),
30        "title": movie.get("name"),
31        "url": movie.get("url"),
32        "rating": rating_info.get("ratingValue"),
33        "votes": rating_info.get("ratingCount"),
34        "year": movie.get("datePublished", "")[:4],
35        "genre": ", ".join(movie.get("genre", [])),
36        "director": director_names,
37        "description": movie.get("description"),
38    })
39df = pd.DataFrame(movies)
40df.to_csv("imdb_top250_jsonld.csv", index=False)
41print(f"Αποθηκεύτηκαν {len(df)} ταινίες")
42print(df.head())

Και τα δύο scripts περιλαμβάνουν χειρισμό σφαλμάτων και παράγουν καθαρή έξοδο CSV. Το Script B σου δίνει πλουσιότερα δεδομένα — σκηνοθέτη, περιγραφή, URL — και είναι πιο ανθεκτικό σε αλλαγές διάταξης.

Πώς να κάνεις εξαγωγή δεδομένων από το IMDb χωρίς να γράψεις καθόλου κώδικα (με το Thunderbit)

Δεν χρειάζεται ή δεν θέλει ο καθένας να γράψει Python. Ίσως είσαι αναλυτής λειτουργιών που χρειάζεται απλώς τις ταινίες με την υψηλότερη βαθμολογία αυτής της εβδομάδας σε ένα spreadsheet. Ίσως είσαι content strategist που θέλει να συγκρίνει τάσεις ειδών ανά έτη. Σε αυτές τις περιπτώσεις, το να γράψεις scraper είναι υπερβολή.

Δες πώς να πάρεις τα ίδια δεδομένα χρησιμοποιώντας το :

Πριν ξεκινήσεις:

  • Δυσκολία: Αρχάριος
  • Απαιτούμενος χρόνος: ~2 λεπτά
  • Τι θα χρειαστείς: Chrome browser, (η δωρεάν βαθμίδα λειτουργεί)

Βήμα 1: Πήγαινε στη σελίδα του IMDb που θέλεις να εξάγεις. Άνοιξε το Top 250 του IMDb (ή οποιαδήποτε άλλη λίστα/σελίδα αναζήτησης του IMDb) στο Chrome.

Βήμα 2: Πάτησε «AI Suggest Fields» στο sidebar του Thunderbit. Η AI σαρώνει τη σελίδα και προτείνει στήλες — συνήθως Τίτλος, Έτος, Αξιολόγηση, Είδος και μερικά ακόμα, ανάλογα με τη σελίδα. Θα δεις έναν προεπισκοπικό πίνακα με τα προτεινόμενα πεδία.

Βήμα 3: Προσαρμόσε τα πεδία αν χρειάζεται. Αφαίρεσε στήλες που δεν χρειάζεσαι ή πρόσθεσε προσαρμοσμένες πατώντας «+ Add Column» και περιγράφοντας με απλά αγγλικά τι θέλεις (π.χ. «Όνομα σκηνοθέτη» ή «Αριθμός ψήφων»).

Βήμα 4: Πάτησε «Scrape». Το Thunderbit εξάγει τα δεδομένα. Για σελίδες με infinite scroll ή σελιδοποίηση, το χειρίζεται αυτόματα.

Βήμα 5: Εξαγωγή. Πάτησε το κουμπί εξαγωγής και διάλεξε μορφή — Excel, Google Sheets, CSV, Airtable ή Notion. Τα δεδομένα καταλήγουν στον προορισμό σου σε δευτερόλεπτα.

Το βασικό πλεονέκτημα εδώ δεν είναι μόνο η ευκολία — είναι ότι η AI του Thunderbit διαβάζει τη δομή της σελίδας από την αρχή κάθε φορά. Όταν το IMDb αλλάζει τη διάταξή του (και θα το κάνει), η AI προσαρμόζεται. Χωρίς selectors για ενημέρωση, χωρίς κώδικα για διόρθωση. Για όποιον έχει «καεί» από χαλασμένο scraper στις 2 το πρωί πριν από προθεσμία, αυτό αξίζει πολλά.

Το Thunderbit υποστηρίζει επίσης scraping υποσελίδων — μπορείς να μπεις στη σελίδα λεπτομερειών κάθε ταινίας και να εμπλουτίσεις τον πίνακά σου με cast, σκηνοθέτη, διάρκεια και άλλα πεδία που δεν φαίνονται στη σελίδα λίστας. Αν θέλεις να το δεις στην πράξη, δες το .

Είναι νόμιμο να κάνεις εξαγωγή δεδομένων από το IMDb; Τι πρέπει να ξέρεις

Οι χρήστες το ρωτούν ξεκάθαρα στα φόρουμ: «Είναι κάτι τέτοιο νόμιμο;… Το IMDb δεν θέλει οι άνθρωποι να κάνουν scraping στην ιστοσελίδα του.» Είναι δίκαιη ερώτηση και κανένα ανταγωνιστικό άρθρο δεν την καλύπτει.

robots.txt του IMDb: Το Top 250 chart (/chart/top/), οι μεμονωμένες σελίδες τίτλων (/title/ttXXXXXXX/) και οι σελίδες ονομάτων (/name/nmXXXXXXX/) ΔΕΝ είναι μπλοκαρισμένες από το robots.txt. Διαδρομές που είναι μπλοκαρισμένες περιλαμβάνουν τα /find, /_json/*, /search/name-text, /user/ur*/ratings και διάφορα AJAX endpoints. Δεν υπάρχει καθορισμένο directive Crawl-delay.

Όροι Χρήσης του IMDb: Η σχετική ρήτρα ορίζει: «Δεν επιτρέπεται να χρησιμοποιείτε data mining, robots, screen scraping ή παρόμοια εργαλεία συλλογής και εξαγωγής δεδομένων σε αυτόν τον ιστότοπο, εκτός αν έχετε τη ρητή γραπτή συγκατάθεσή μας.» Μια επιπλέον ρήτρα απαγορεύει τη μεταπώληση ή εμπορική χρήση δεδομένων που έχουν εξαχθεί.

Τι σημαίνει αυτό στην πράξη: Πρόσφατες δικαστικές αποφάσεις του 2024 (Meta v. Bright Data, X Corp v. Bright Data) έκριναν ότι οι Όροι Χρήσης ενδέχεται να μην δεσμεύουν χρήστες που δεν τους αποδέχθηκαν ποτέ — αν κάνεις scraping δημοσίως διαθέσιμων δεδομένων χωρίς σύνδεση, η εκτελεστότητα των ToS είναι αμφισβητήσιμη. Όμως αυτό είναι ένα νομικό πεδίο που εξελίσσεται.

Ασφαλείς εναλλακτικές: Τα επιτρέπονται ρητά για προσωπική και μη εμπορική χρήση. Το API του TMDb είναι επίσης επιτρεπτικό με δωρεάν API key. Και τα δύο είναι καλές επιλογές αν θέλεις να είσαι ξεκάθαρα καλυμμένος.

Πρακτική καθοδήγηση: Αν κάνεις scraping, χρησιμοποίησε ρυθμό ανίχνευσης με σεβασμό (time.sleep(3) ανάμεσα στα requests), όρισε σωστά headers και μην χτυπάς διαδρομές που είναι μπλοκαρισμένες από το robots.txt. Για εμπορικά projects, συμβουλέψου νομικό ή χρησιμοποίησε τα επίσημα datasets/API.

Έχουμε καλύψει σε βάθος τις στο blog του Thunderbit.

Συμπέρασμα: διάλεξε τον σωστό τρόπο για να κάνεις εξαγωγή δεδομένων από το IMDb με Python

Η σύντομη εκδοχή:

  • BeautifulSoup + CSS selectors: Καλό για να μάθεις τα θεμέλια. Περίμενε να σπάει κάθε 6–12 μήνες. Να έχεις πάντα χειρισμό σφαλμάτων.
  • Εξαγωγή JSON-LD: Η προσέγγιση που θα πρότεινα για κάθε συνεχιζόμενο project Python. Ακολουθεί το πρότυπο Schema.org, αλλάζει πολύ λιγότερο συχνά από τα CSS classes και σου δίνει καθαρά δομημένα δεδομένα χωρίς rendering JavaScript.
  • JSON __NEXT_DATA__: Χρησιμοποίησέ το ως συμπλήρωμα για πλουσιότερα δεδομένα σε μεμονωμένες σελίδες τίτλων (διάρκεια, πλήρες cast, πλοκή, εικόνες αφίσας).
  • IMDb Official Datasets: Η καλύτερη επιλογή για ανάλυση μεγάλης κλίμακας. 26M+ τίτλοι, καθημερινές ενημερώσεις, χωρίς ανάγκη scraping. Μόνο για προσωπική/μη εμπορική χρήση.
  • : Η καλύτερη επιλογή για μη τεχνικούς ή για όποιον θέλει δεδομένα γρήγορα χωρίς να συντηρεί κώδικα. Η AI προσαρμόζεται στις αλλαγές διάταξης, χειρίζεται τη σελιδοποίηση και εξάγει σε Excel/Sheets/Airtable/Notion.

Βάλε σε σελιδοδείκτη αυτόν τον οδηγό — θα τον ενημερώσω όταν αλλάξει ξανά η δομή του IMDb. Και αν θέλεις να παραλείψεις εντελώς τον κώδικα, και δες πόσο γρήγορα μπορείς να πας από μια σελίδα IMDb σε ένα καθαρό spreadsheet. Αν δουλεύεις και με άλλα sites, ο οδηγός μας για το καλύπτει τη συνολική ροή εργασίας.

Δοκίμασε το AI Web Scraper για το IMDb και πολλά άλλα

Συχνές ερωτήσεις

Είναι νόμιμο να κάνω εξαγωγή δεδομένων από το IMDb;

Οι Όροι Χρήσης του IMDb απαγορεύουν το scraping χωρίς συγκατάθεση, αλλά η εκτελεστότητα των ToS σε δημόσια προσβάσιμα δεδομένα είναι νομικά αμφισβητήσιμη μετά από πρόσφατες δικαστικές αποφάσεις του 2024. Οι ασφαλέστερες επιλογές είναι τα (προσωπική/μη εμπορική χρήση) ή το TMDb API (δωρεάν key). Αν κάνεις scraping, σεβάσου το robots.txt, χρησιμοποίησε λογικές καθυστερήσεις ανάμεσα στα requests και απόφυγε μπλοκαρισμένες διαδρομές. Για εμπορική χρήση, συμβουλέψου νομικό.

Γιατί ο IMDb scraper μου επιστρέφει κενά αποτελέσματα;

Σχεδόν πάντα, η αιτία είναι ξεπερασμένοι CSS selectors — class names όπως τα td.titleColumn και td.ratingColumn δεν υπάρχουν από τον Ιούνιο του 2023. Η λύση είναι να περάσεις σε εξαγωγή JSON-LD (να αναλύσεις το tag <script type="application/ld+json">) ή να ενημερώσεις τους selectors σου στα τρέχοντα class names με πρόθεμα ipc-. Επίσης βεβαιώσου ότι περιλαμβάνεις σωστό header User-Agent, γιατί η απουσία του προκαλεί σφάλμα 403 που μπορεί να μοιάζει με κενά αποτελέσματα.

Πώς κάνω εξαγωγή από το IMDb για περισσότερα από 25 αποτελέσματα;

Η σελίδα Top 250 φορτώνει και τις 250 ταινίες σε μία μόνο απάντηση — δεν χρειάζεται σελιδοποίηση. Για αποτελέσματα αναζήτησης, χρησιμοποίησε την παράμετρο URL start= (αυξάνοντας κατά 50) για να περάσεις από τις σελίδες αποτελεσμάτων. Για παράδειγμα: start=1, start=51, start=101. Βάλε time.sleep(3) ανάμεσα στα requests για να μη μπλοκαριστείς. Εναλλακτικά, τα επίσημα datasets του IMDb στο περιέχουν 26M+ τίτλους χωρίς να χρειάζεται σελιδοποίηση.

Τι είναι το __NEXT_DATA__ και γιατί να το χρησιμοποιήσω για το IMDb;

Το __NEXT_DATA__ είναι ένα αντικείμενο JSON ενσωματωμένο σε tag <script id="__NEXT_DATA__"> στις σελίδες React/Next.js του IMDb. Περιέχει τα πλήρη δομημένα δεδομένα που χρησιμοποιεί το React για να αποδώσει τη σελίδα — τίτλους, αξιολογήσεις, cast, είδη, διάρκεια και άλλα. Επειδή αναπαριστά το υποκείμενο μοντέλο δεδομένων και όχι την οπτική διάταξη, είναι πιο ανθεκτικό σε ανασχεδιασμούς UI από ό,τι οι CSS selectors. Χρησιμοποίησέ το μαζί με JSON-LD για την πιο robust προσέγγιση εξαγωγής.

Μπορώ να κάνω εξαγωγή από το IMDb χωρίς προγραμματισμό;

Ναι. Δύο βασικές επιλογές: (1) Κατέβασε τα — 7 αρχεία TSV που καλύπτουν 26M+ τίτλους, με καθημερινές ενημερώσεις, δωρεάν για μη εμπορική χρήση. (2) Χρησιμοποίησε το , που διαβάζει τη σελίδα του IMDb, προτείνει αυτόματα πεδία εξαγωγής και εξάγει σε Excel, Google Sheets ή CSV σε δύο κλικ — χωρίς κώδικα, χωρίς selectors για συντήρηση.

Μάθε περισσότερα

Ke
Ke
CTO @ Thunderbit. Ο Ke είναι το άτομο στο οποίο απευθύνονται όλοι όταν τα δεδομένα γίνονται μπερδεμένα. Έχει αφιερώσει την καριέρα του στο να μετατρέπει κουραστική, επαναλαμβανόμενη δουλειά σε μικρές, αθόρυβες αυτοματοποιήσεις που απλώς τρέχουν. Αν έχεις ποτέ ευχηθεί ένα υπολογιστικό φύλλο να συμπληρώνεται μόνο του, ο Ke πιθανότατα έχει ήδη φτιάξει το εργαλείο που το κάνει.
Πίνακας περιεχομένων

Δοκίμασε το Thunderbit

Εξήγαγε leads και άλλα δεδομένα σε μόλις 2 κλικ. Με AI.

Απόκτησε το Thunderbit Είναι δωρεάν
Εξήγαγε δεδομένα με AI
Μετέφερε εύκολα δεδομένα σε Google Sheets, Airtable ή Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week