Audible ist Amazons Hörbuch-Dienst, und sein öffentlicher Katalog umfasst Hunderttausende von Titeln in jedem Genre, jeder mit Autor, Sprecher, Laufzeit, Sternebewertung und Preis. Diese Such- und Kategorieseiten bieten einen der klarsten Einblicke in den Hörbuchmarkt im offenen Web, weshalb Analysten, Bibliothekarinnen und Hobbyisten sie nutzen, um Preise zu verfolgen, Leselisten aufzubauen und zu untersuchen, was sich verkauft.

Dieser Leitfaden zeigt Ihnen, wie Sie Audible-Hörbuchdaten mit Python scrapen und die Ergebnisse in eine kleine "Mini-Bibliothek"-Datei zusammenbauen. Sie erstellen einen lauffähigen Scraper, der eine Audible-Such- oder Kategorieseite über die Crawling API abruft, einen sauberen Datensatz pro Hörbuch parst, Pagination verarbeitet und die Menge in JSON und CSV exportiert. Die gesamte Anleitung beschränkt sich auf öffentliche Katalogdaten: die Titel, Autoren, Sprecher, Laufzeiten, Bewertungen und Preise, die jeder auf einer Ergebnisseite ohne Anmeldung sehen kann. Der Audio-Inhalt selbst wird nie berührt.

Was Sie erstellen werden

Ein Python-Skript, das eine Audible-Such- oder Kategorie-URL entgegennimmt, die gerenderte Auflistung über die Crawling API abruft und einen strukturierten Datensatz pro Hörbuch extrahiert. Wir verwenden eine Kategorieresultatseite als laufendes Beispiel und ziehen diese Felder aus jeder Produktkarte:

  • Titel der Name des Hörbuchs, wie er auf der Auflistungskarte angezeigt wird.
  • Autor der auf dem Titel angeführte Verfasser, "By: ..." auf der Karte.
  • Sprecher der Vortragende, "Narrated by: ..." auf der Karte.
  • Länge die Gesamtlaufzeit, zum Beispiel "10 hrs and 32 mins".
  • Bewertung die durchschnittliche Sternebewertung, wenn der Titel eine hat.
  • Preis der angegebene Preis, wenn die Karte einen anzeigt.
  • Link die URL zur eigenen Detailseite des Hörbuchs.

Warum eine einfache Anfrage bei Audible scheitert

Wenn Sie einen einfachen HTTP-Client auf eine Audible-Ergebnis-URL richten, erhalten Sie selten die gewünschte Auflistung. Zwei Dinge arbeiten gegen Sie. Erstens rendert Audible einen Großteil des Produktrasters clientseitig: Es liefert eine leichte Hülle und füllt die Karten beim Ausführen des JavaScript der Seite, sodass dem initialen HTML oft die Laufzeiten, Preise und Bewertungen fehlen, die Sie benötigen. Zweitens markiert Audible als Amazon-Dienst automatisierten Traffic schnell. Datacenter-IP-Bereiche und Anfragemuster, die nicht wie ein echter Browser aussehen, werden mit einem CAPTCHA, einem "Robot Check"-Interstitial oder einer direkten Sperrung konfrontiert, bevor Sie die Liste erreichen.

Ein funktionierender Audible-Scraper benötigt also zwei Dinge in einer Anfrage: einen Browser, der die Seite rendert, und eine IP, die Audible als echten Besucher liest. Sie können das selbst mit einem Headless-Browser und einem Pool von rotierenden Residential-Proxies zusammenbauen, aber diesen Stack gesund zu halten, ist der größte Teil der Arbeit. Die Crawling API faltet beides in einen einzigen Aufruf: Sie senden ihr die Ergebnis-URL, sie rendert die Seite hinter einer vertrauenswürdigen Residential-IP, übernimmt Rotation und CAPTCHA-Lösung, und gibt fertiges HTML zum Parsen zurück.

Voraussetzungen

Sie brauchen einige Dinge, bevor Sie mit dem Schreiben von Code beginnen. Keines davon nimmt lang.

Grundlegendes Python. Sie sollten in der Lage sein, ein Python-Skript zu schreiben und auszuführen sowie Pakete mit pip zu installieren. Wenn Sie neu in der Sprache sind, decken die offiziellen Python-Docs oder jeder Anfängerkurs das Niveau ab, das dieses Tutorial voraussetzt.

Python 3.8 oder höher. Überprüfen Sie Ihre Version mit python --version (oder python3 --version). Falls Sie es nicht haben, installieren Sie es von python.org und stellen Sie sicher, dass Python in Ihrem System-PATH ist.

Ein Crawlbase-Konto und ein Token. Melden Sie sich für ein kostenloses Konto an, öffnen Sie Ihr Dashboard und kopieren Sie Ihr Token. Der kostenlose Tarif enthält bis zu 20.000 Anfragen ohne Kreditkarte, was reichlich ist, um diesen Scraper zu bauen und zu testen. Behandeln Sie das Token wie ein Passwort und halten Sie es aus der Versionskontrolle heraus.

Das Projekt einrichten

Erstellen Sie eine virtuelle Umgebung, damit Projektabhängigkeiten isoliert bleiben, und installieren Sie dann die zwei Bibliotheken, die der Scraper benötigt. crawlbase ist der offizielle Client für die Crawling API, und beautifulsoup4 parst das zurückgegebene HTML, damit Sie jedes Feld aus den Auflistungskarten per CSS-Selektor herausziehen können.

bash
python --version

python -m venv audible_env
source audible_env/bin/activate

pip install crawlbase beautifulsoup4

Unter Windows aktivieren Sie die Umgebung mit audible_env\Scripts\activate anstelle der source-Zeile. Mit beiden installierten Bibliotheken erstellen Sie die Skriptdatei, die der Rest dieses Leitfadens aufbaut:

bash
touch audible_library.py

Die Audible-Ergebnisseite verstehen

Audible organisiert seinen Katalog wie eine Bibliothek, mit überlappenden Kategorien, zu denen ein Titel gleichzeitig gehören kann. Jede Kategorie und jede Suche befindet sich unter einer stabilen URL, zum Beispiel https://www.audible.com/search?node=18573211011 für einen Kategorie-Knoten oder https://www.audible.com/search?keywords=science+fiction für eine Schlüsselwortsuche. Beide rendern dieselbe Art von Ergebnisraster: eine geordnete Liste von Produktkarten, eine pro Hörbuch, jede mit Titel, Autorzeile, Sprecher-Zeile, Laufzeit, Bewertung und Preis.

Vor dem Schreiben von Selektoren öffnen Sie eine Ergebnisseite in Ihrem Browser, klicken Sie mit der rechten Maustaste auf eine Produktkarte und wählen Sie Inspizieren. Audible umschließt jedes Ergebnis in einem Listenelement mit der Bezeichnung li.productListItem, setzt den Titel in einen h3.bc-heading-Link und kennzeichnet die Autor- und Sprecher-Zeilen mit li.authorLabel und li.narratorLabel. Die Laufzeit befindet sich in li.runtimeLabel und die Bewertung in li.ratingsLabel. Das sind die Elemente, auf die Sie abzielen. Audibles Utility-Klassennamen verschieben sich im Laufe der Zeit, also verlassen Sie sich lieber auf die dauerhafteren Label-Klassen als auf eine fragile Kette von generierten Namen.

Schritt 1: Die gerenderte Ergebnisseite abrufen

Beginnen Sie damit, die fertige Seite zu holen. Importieren Sie die Klasse CrawlingAPI, initialisieren Sie sie mit Ihrem Token, setzen Sie die Ergebnis-URL und rufen Sie sie ab. Den Statuscode vor dem Parsen zu prüfen hält Fehler laut statt still.

python
from crawlbase import CrawlingAPI

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

def crawl(page_url):
    options = {"ajax_wait": "true", "page_wait": 4000}
    response = api.get(page_url, options)
    if response["status_code"] == 200:
        return response["body"].decode("latin1")
    print(f"Request failed: {response['status_code']}")
    return None

if __name__ == "__main__":
    results_url = "https://www.audible.com/search?keywords=science+fiction"
    html = crawl(results_url)
    print(html[:500] if html else "No HTML returned")

Die zwei Wait-Optionen sind wichtig für ein Raster, das sich beim Laden der Seite füllt. ajax_wait weist die API an, auf das Ende asynchroner Inhalte zu warten, und page_wait hält nach dem Laden eine feste Anzahl von Millisekunden, damit spät rendernde Karten erscheinen, bevor die Seite erfasst wird. Der Body wird als latin1 dekodiert, weil Audible-Seiten Zeichen mischen, an denen striktes UTF-8-Dekodieren scheitern kann. Führen Sie das Skript aus und Sie sollten echtes Auflistungs-Markup sehen, keine Robot-Check-Hülle. Das bestätigt, dass das Rendering funktioniert, bevor Sie einen einzigen Selektor schreiben.

Crawlbase Crawling API

Diese Audible-Ergebnisseite benötigt ein gerendertes Raster hinter einer vertrauenswürdigen IP, in einem Aufruf. Die Crawling API nimmt Ihr Token, führt die Suchseite in einem echten Browser aus, rotiert serverseitig durch Residential-IPs und übernimmt die CAPTCHA-Lösung, dann übergibt sie Ihnen fertiges HTML. Sie überspringen das Betreiben einer Headless-Browser-Flotte und eines Proxy-Pools selbst. Richten Sie sie zuerst auf eine Such- oder Kategorie-URL im kostenlosen Tarif mit bis zu 20.000 Anfragen.

Schritt 2: Die Hörbuch-Karten mit BeautifulSoup parsen

Mit gerendem HTML zur Hand laden Sie es in BeautifulSoup, finden jede Produktkarte und ziehen jedes Feld per Selektor heraus. Audible umschließt jedes Ergebnis in li.productListItem, setzt den Titel in den Überschriften-Link und kennzeichnet die Autor-, Sprecher-, Laufzeit- und Bewertungszeilen mit ihren eigenen Klassen. Den Detailseiten-Link aus dem Titel-Anker lesen. Jede Karte in ein try/except einwickeln, damit eine fehlerhafte Auflistung den Lauf nicht zum Absturz bringt.

python
from bs4 import BeautifulSoup

BASE = "https://www.audible.com"

def text_of(card, selector):
    el = card.select_one(selector)
    return el.get_text(strip=True) if el else None

def strip_label(value, label):
    if value and value.startswith(label):
        return value[len(label):].strip()
    return value

def parse_link(card):
    a = card.select_one("h3.bc-heading a[href]")
    if not a:
        return None
    href = a["href"].split("?")[0]
    return href if href.startswith("http") else BASE + href

def scrape_audiobooks(html):
    soup = BeautifulSoup(html, "html.parser")
    cards = soup.select("li.productListItem")
    results = []
    for card in cards:
        try:
            author = text_of(card, "li.authorLabel")
            narrator = text_of(card, "li.narratorLabel")
            results.append({
                "title": text_of(card, "h3.bc-heading a"),
                "author": strip_label(author, "By:"),
                "narrator": strip_label(narrator, "Narrated by:"),
                "length": strip_label(text_of(card, "li.runtimeLabel"), "Length:"),
                "rating": text_of(card, "li.ratingsLabel span.bc-text"),
                "price": text_of(card, "p.buybox-regular-price span.bc-text"),
                "link": parse_link(card),
            })
        except Exception as e:
            print(f"Skipped a card: {e}")
    return results

Der text_of-Helfer fragt ein Element innerhalb einer Karte ab und gibt None zurück, wenn es fehlt, anstatt bei einem .get_text()-Aufruf auf nichts zu werfen. Das hält die Extraktion resilient, wenn ein Feld fehlt, was häufig vorkommt, da nicht jeder Titel einen Preis oder eine Bewertung anzeigt. Der strip_label-Helfer trimmt die Präfixe By:, Narrated by: und Length:, die Audible in diesen Label-Zeilen druckt, sodass Sie saubere Werte speichern. Der Link wird aus dem Titel-Anker gelesen, hat seinen Query-String entfernt und wird zu einer absoluten URL normalisiert, da Audible einen relativen href liefert.

Selektoren driften

Audibles generierte Utility-Klassennamen ändern sich ohne Vorankündigung, während die semantischen Label-Klassen (li.authorLabel, li.narratorLabel, li.runtimeLabel, li.ratingsLabel) dauerhafter sind. Betrachten Sie die obigen Selektoren als Startvorlage, nicht als Vertrag. Wenn ein Feld für jede Karte als None zurückkommt, inspizieren Sie die Live-Ergebnisseite in den Dev Tools Ihres Browsers neu und aktualisieren Sie den Selektor. Regelmäßige Selektor-Wartung ist bei jedem Produktions-Scraper normal.

Schritt 3: Pagination verarbeiten, zusammenstellen und exportieren

Eine Seite Ergebnisse ist ein Demo; eine echte Mini-Bibliothek erstreckt sich über die gesamte Kategorie. Audible paginiert seine Such- und Kategorieseiten mit einem ?page=-Parameter, also gehen Sie die Seiten der Reihe nach durch, parsen jede und stoppen, wenn eine Seite keine Karten zurückgibt. Dann verbinden Sie Abruf und Parse in einem lauffähigen Skript und schreiben die Datensätze sowohl in JSON als auch in CSV, damit Sie sie in ein Notizbuch oder eine Tabellenkalkulation laden können.

python
import csv
import json
import time
from crawlbase import CrawlingAPI
from bs4 import BeautifulSoup

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})
BASE = "https://www.audible.com"
FIELDS = ["title", "author", "narrator", "length", "rating", "price", "link"]

def crawl(page_url):
    options = {"ajax_wait": "true", "page_wait": 4000}
    response = api.get(page_url, options)
    if response["status_code"] == 200:
        return response["body"].decode("latin1")
    print(f"Request failed: {response['status_code']}")
    return None

def text_of(card, selector):
    el = card.select_one(selector)
    return el.get_text(strip=True) if el else None

def strip_label(value, label):
    if value and value.startswith(label):
        return value[len(label):].strip()
    return value

def parse_link(card):
    a = card.select_one("h3.bc-heading a[href]")
    if not a:
        return None
    href = a["href"].split("?")[0]
    return href if href.startswith("http") else BASE + href

def scrape_audiobooks(html):
    soup = BeautifulSoup(html, "html.parser")
    cards = soup.select("li.productListItem")
    results = []
    for card in cards:
        try:
            author = text_of(card, "li.authorLabel")
            narrator = text_of(card, "li.narratorLabel")
            results.append({
                "title": text_of(card, "h3.bc-heading a"),
                "author": strip_label(author, "By:"),
                "narrator": strip_label(narrator, "Narrated by:"),
                "length": strip_label(text_of(card, "li.runtimeLabel"), "Length:"),
                "rating": text_of(card, "li.ratingsLabel span.bc-text"),
                "price": text_of(card, "p.buybox-regular-price span.bc-text"),
                "link": parse_link(card),
            })
        except Exception as e:
            print(f"Skipped a card: {e}")
    return results

def build_library(search_url, max_pages=5):
    library = []
    for page in range(1, max_pages + 1):
        sep = "&" if "?" in search_url else "?"
        page_url = f"{search_url}{sep}page={page}"
        html = crawl(page_url)
        if not html:
            break
        found = scrape_audiobooks(html)
        if not found:
            break
        library.extend(found)
        print(f"Page {page}: {len(found)} audiobooks")
        time.sleep(2)
    return library

def export(rows, name="audible_library"):
    with open(f"{name}.json", "w", encoding="utf-8") as f:
        json.dump(rows, f, indent=2, ensure_ascii=False)
    with open(f"{name}.csv", "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=FIELDS)
        writer.writeheader()
        writer.writerows(rows)
    print(f"Saved {len(rows)} audiobooks to {name}.json and {name}.csv")

def main():
    url = "https://www.audible.com/search?keywords=science+fiction"
    library = build_library(url, max_pages=5)
    if library:
        export(library)

if __name__ == "__main__":
    main()

Führen Sie das vollständige Skript mit python audible_library.py aus. Es geht bis zu fünf Seiten Ergebnisse durch, parst eine Zeile pro Hörbuch und schreibt sowohl audible_library.json als auch audible_library.csv. Der Leer-Ergebnis-Break stoppt früh, wenn die Kategorie keine weiteren Seiten hat, das time.sleep(2) zwischen Anfragen pacet den Lauf, damit Sie nicht für schnellen Traffic markiert werden, und die gemeinsame FIELDS-Liste hält die CSV-Spaltenreihenfolge mit den Dictionary-Schlüsseln synchron, damit die zwei Exporte nie auseinanderdriften.

Wie die Ausgabe aussieht

Sie erhalten eine saubere Liste von Hörbuch-Datensätzen in Auflistungsreihenfolge, bereit zum Schreiben in JSON, CSV oder eine Datenbank. Das ist Ihre Mini-Bibliothek.

json
[
  {
    "title": "Project Hail Mary",
    "author": "Andy Weir",
    "narrator": "Ray Porter",
    "length": "16 hrs and 10 mins",
    "rating": "4.9 out of 5 stars",
    "price": "$24.49",
    "link": "https://www.audible.com/pd/Project-Hail-Mary-Audiobook/B08G9PRS1K"
  },
  {
    "title": "Dune",
    "author": "Frank Herbert",
    "narrator": "Scott Brick, Orlagh Cassidy, Euan Morton",
    "length": "21 hrs and 2 mins",
    "rating": "4.6 out of 5 stars",
    "price": "$29.65",
    "link": "https://www.audible.com/pd/Dune-Audiobook/B002V1OF70"
  }
]

Von hier aus gehört Ihnen die Mini-Bibliothek. Laden Sie die CSV in eine Tabellenkalkulation, um nach Länge oder Bewertung zu sortieren, filtern Sie das JSON nach Titeln unter einer Preisgrenze, oder fügen Sie die Menge in eine Empfehlungsliste ein. Da jeder Datensatz den Detailseiten-Link trägt, können Sie später nachfassen und die Seite eines einzelnen Titels für die vollständige Beschreibung oder den Verlag scrapen, wenn Sie mehr als die Auflistungsfelder benötigen.

Über Kategorien skalieren

Eine Suche ist ein Ausgangspunkt; eine vollständigere Bibliothek erstreckt sich über mehrere Kategorien. Audible stellt eine Ergebnisseite für jeden Kategorieknoten und jede Schlüsselwortsuche bereit, jede unter ihrer eigenen URL, sodass Sie eine Zuordnung von Namen zu URLs führen und dieselbe build_library-Routine über jede laufen lassen können, wobei die Ausgabe nach Kategorie geordnet wird. Pacen Sie die Anfragen mit der bereits in der Schleife vorhandenen Verzögerung, und begrenzen Sie max_pages, damit ein breiter Lauf nicht aufbläht. Um Preis- und Bewertungstrends über die Zeit zu verfolgen, führen Sie den Job nach einem Zeitplan aus, stempeln jeden Export mit dem Datum und vergleichen sukzessive Schnappschüsse, um zu sehen, was sich bewegt hat. Der gleiche Ansatz treibt jedes E-Commerce-Scraping-Projekt an, das einen Katalog über die Zeit beobachtet.

Unblockiert bleiben

Auch wenn das Rendering gehandhabt wird, beobachtet Audible Scraper-ähnlichen Traffic. Einige Gewohnheiten halten einen Lauf gesund, und sie gelten für jedes schwere kommerzielle Ziel.

  • Anfragen pacen. Anfragen mit einer Verzögerung zwischen Seiten und Kategorien verteilen, anstatt alles mit voller Geschwindigkeit zu crawlen. Schwerere Jobs während verkehrsarmer Zeiten planen, um Audibles Server zu entlasten.
  • Auf Rotation verlassen. Ein Pool von Residential-IPs verteilt Anfragen über viele echte Benutzeradressen, sodass keine einzelne ein Rate-Limit auslöst. Die Crawling API übernimmt das für Sie; wenn Sie Ihren eigenen Stack aufbauen, ist das der Teil, den Sie richtig machen müssen.
  • Nur aufbewahren, was Sie brauchen. Speichern Sie die Katalogfelder, die Ihr Projekt verwendet, und verwerfen Sie den Rest. Überprüfen Sie Ihre Selektoren regelmäßig, damit der Scraper mit Markup-Änderungen Schritt hält.

Das umfassendere Playbook zur Vermeidung von Blockierungen finden Sie unter wie man Websites scrapt, ohne blockiert zu werden. Wenn Sie die Parsing-Seite vertiefen möchten, behandelt der Leitfaden zur Verwendung von BeautifulSoup in Python die Bibliothek ausführlich, und für ein verwandtes Katalogziel passt die Anleitung zum Scrapen von Goodreads-Bewertungen und -Kommentaren natürlich zu einem Hörbuch-Datensatz.

Ob das Scrapen von Audible erlaubt ist, hängt von Audibles und Amazons Nutzungsbedingungen, Ihrer Rechtsordnung und dem ab, was Sie mit den Daten tun. Diese Bedingungen schränken automatisierten Zugriff ein, sodass das Scrapen unabhängig davon, wie sorgfältig Ihr Tooling ist, dagegen verstoßen kann. Keiner der Code hier ändert das; er lässt nur den technischen Teil funktionieren. Lesen Sie Audibles Nutzungsbedingungen und seine robots.txt und behandeln Sie beides als Grenze dessen, was Sie sammeln. Für kommerzielle oder wettbewerbliche Nutzung wird das rechtliche Bild komplexer, und das Konsultieren eines Rechtsexperten für Ihren spezifischen Fall ist der vernünftige Schritt.

Einige Grundsätze, die es wert sind, eingehalten zu werden. Nur öffentliche Katalogdaten sammeln: die Titel, Autoren, Sprecher, Laufzeiten, Bewertungen, Preise und Auflistungslinks, die jeder auf einer Ergebnisseite ohne Account sehen kann. Dieser Leitfaden berührt nie den Audio-Inhalt selbst, der urheberrechtlich geschützt ist und den Sie nicht herunterladen oder weitergeben dürfen, und er hält sich von allem hinter einem Login, Konto- oder Kaufdaten, und persönlichen Informationen über identifizierbare Hörer oder Rezensenten fern. Halten Sie Ihr Anfragevolumen niedrig genug, dass Sie Audibles Server nicht belasten, und wenn Sie die Daten kommerziell wiederverwenden möchten, holen Sie eine Genehmigung oder ein offizielles Abkommen ein, anstatt anzunehmen, dass Schweigen Zustimmung ist.

Dieser Leitfaden ist bewusst auf öffentliche Such- und Kategorieseiten beschränkt, weil das die Linie ist, die die Arbeit vertretbar hält. Für lizenzierten oder Massenzugriff bietet Amazon die Product Advertising API und andere offizielle Programme an, und das ist das richtige Werkzeug, wenn Sie große Volumina, garantierte Struktur oder kommerzielle Rechte benötigen. Wenn Ihr Projekt mehr als öffentliche Katalog-Metadaten benötigt, ist eine offizielle API oder ein Datenabkommen der richtige Weg, kein cleverer Scraper, und es ist immer die bessere Wahl, wenn es eine gibt.

Zusammenfassung

Wichtigste Erkenntnisse

  • Audibles Katalog ist reichhaltige öffentliche Metadaten. Jede Ergebnisseite listet Titel, Autor, Sprecher, Laufzeit, Bewertung und Preis auf, weshalb sie so nützlich für den Aufbau einer Leseliste oder die Untersuchung des Hörbuchmarkts ist.
  • Sie benötigen Rendering und eine vertrauenswürdige IP zusammen. Audible füllt das Produktraster clientseitig und blockiert Bot-Traffic, sodass die Crawling API die Seite hinter einer Residential-IP in einem Aufruf rendert.
  • BeautifulSoup übernimmt die Extraktion. Durch li.productListItem-Karten iterieren und Titel, Autor, Sprecher, Länge, Bewertung, Preis und Link aktuellen Selektoren zuordnen, wobei davon auszugehen ist, dass diese Selektoren driften.
  • Pagination baut die Bibliothek auf. Die ?page=-Seiten durchgehen, bis eine keine Karten zurückgibt, dann in JSON und CSV exportieren, mit einer gemeinsamen Feldliste, damit die zwei Dateien synchron bleiben.
  • Bei öffentlichen Metadaten bleiben. Audibles Nutzungsbedingungen und robots.txt respektieren, den urheberrechtlich geschützten Audio oder irgendetwas hinter einem Login nie berühren, und Amazons offizielle API für lizenzierte oder Massendaten bevorzugen.

Häufig gestellte Fragen

Warum gibt eine einfache Anfrage keine Hörbücher von Audible zurück?

Zwei Gründe. Audible füllt einen Großteil des Produktrasters clientseitig beim Laden der Seite, sodass eine rohe Anfrage oft eine Hülle liefert, der Laufzeiten, Bewertungen und Preise fehlen. Dazu kommt, dass Audible als Amazon-Dienst Traffic, der nicht wie ein echter Browser aussieht, herausfordert oder blockiert. Das Rendern der Seite über die Crawling API hinter einer vertrauenswürdigen IP löst beides, weshalb der Scraper hier seine Anfrage darüber leitet.

Welche Felder kann ich von einer Audible-Auflistung scrapen?

Von einer Such- oder Kategorie-Ergebniskarte können Sie den Titel, Autor, Sprecher, die Gesamtlänge, die Durchschnittsbewertung, den Preis und den Link zur Detailseite des Hörbuchs abrufen. Das sind die öffentlichen Auflistungsfelder. Wenn Sie die vollständige Beschreibung, den Verlag oder das Erscheinungsdatum benötigen, folgen Sie dem Link jeder Karte und scrapen die individuelle Detailseite, die mehr Metadaten enthält.

Wie scrappe ich eine bestimmte Audible-Kategorie?

Jede Kategorie und Suche hat ihre eigene URL, zum Beispiel /search?keywords=science+fiction für eine Schlüsselwortsuche oder /search?node=... für einen Kategorieknoten. Richten Sie den Scraper auf die gewünschte URL. Um viele Kategorien abzudecken, führen Sie eine Zuordnung von Namen zu URLs und iterieren Sie darüber, wobei die Anfragen mit einer kurzen Verzögerung gepackt werden.

Wie funktioniert die Pagination bei Audible?

Audible hängt einen ?page=-Parameter (oder &page=, wenn die URL bereits einen Query-String hat) an, um Ergebnisseiten durchzugehen. Das Skript erhöht die Seitenzahl, parst jede Seite und stoppt, wenn eine Seite keine Produktkarten zurückgibt, was das Signal ist, dass Sie das Ende der Kategorie erreicht haben.

Kann ich die Hörbücher selbst herunterladen?

Nein, und das sollten Sie nicht versuchen. Die Audiodateien sind urheberrechtlich geschützter Inhalt, der an Audible-Konten und -Käufe gebunden ist, und dieser Leitfaden hält sich bewusst davon fern. Er sammelt nur die öffentlichen Katalog-Metadaten, die Titel, Autoren, Sprecher, Laufzeiten, Bewertungen und Preise, die auf Auflistungsseiten erscheinen, nie den Audio.

Wie vermeide ich Blockierungen beim Scrapen von Audible?

Halten Sie Ihre Pro-IP-Anfragerate niedrig, fügen Sie eine Verzögerung zwischen Seiten und Kategorien ein, und leiten Sie durch rotierende Residential-IPs, damit keine einzelne Adresse ein Rate-Limit auslöst. Die Crawling API verwaltet Rotation, einen vertrauenswürdigen IP-Pool und CAPTCHA-Handling für Sie; wenn Sie Ihren eigenen Stack aufbauen, ist das der Teil, in den Sie investieren sollten. Statuscodes beobachten und zurückzugehen, wenn Sie anfangen, Herausforderungen zu sehen.

Jetzt loslegen

Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.

Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.

Self-Service · Kein Verkaufsgespräch erforderlich · Enterprise-Crawl-Volumen verfügbar