{"id":45888,"date":"2026-06-24T11:19:06","date_gmt":"2026-06-24T11:19:06","guid":{"rendered":"https:\/\/floppydata.com\/nicht-kategorisiert\/leitfaden-zum-ebay-scraper-so-extrahieren-sie-daten-von-ebay\/"},"modified":"2026-06-24T11:19:06","modified_gmt":"2026-06-24T11:19:06","slug":"ebay-scraper-guide-how-to-extract-data-from-ebay","status":"publish","type":"post","link":"https:\/\/floppydata.com\/de\/blog\/ebay-scraper-guide-how-to-extract-data-from-ebay\/","title":{"rendered":"Leitfaden zum eBay-Scraper: So extrahieren Sie Daten von eBay"},"content":{"rendered":"<p>eBay verf\u00fcgt \u00fcber eine wahre Goldgrube an \u00f6ffentlich zug\u00e4nglichen Preisdaten. Millionen aktueller Angebote aus den Bereichen Sammlerst\u00fccke, Elektronik, Auslaufartikel und vieles mehr \u2013 all dies eignet sich hervorragend f\u00fcr die Preisbeobachtung, Marktforschung oder Wettbewerbsanalyse. Das Problem besteht darin, zuverl\u00e4ssig an diese Daten heranzukommen. Mit einem einfachen Python-Skript kommen Sie vielleicht ein paar Seiten weit, bevor eBay Ihnen CAPTCHAs vorlegt.   <\/p>\n<p>In dieser Anleitung werde ich Ihnen daher Schritt f\u00fcr Schritt erkl\u00e4ren, wie Sie mit dem \u201eWeb Unlocker\u201c von Floppydata eBay richtig auswerten und tats\u00e4chlich Ergebnisse erzielen k\u00f6nnen.<\/p>\n<div style=\"border-left: 3px solid #e5e7eb; padding-left: 16px; margin: 24px 0;\">\n<div style=\"font-size: 11px; font-weight: 600; color: #9ca3af; text-transform: uppercase; margin-bottom: 8px;\">TL;DR<\/div>\n<p style=\"font-size: 14px; line-height: 1.6; color: #6b7280; font-style: italic; margin: 0;\">So extrahieren Sie eBay-Angebote, ohne Zeit mit CAPTCHAs und fehlerhaften Selektoren zu verschwenden<\/p>\n<p style=\"font-size: 14px; line-height: 1.6; color: #6b7280; margin: 8px 0 0 0;\">\u2022 eBay blockiert einfache Scraper sehr schnell \u2013 CAPTCHAs, Ratenbeschr\u00e4nkungen, Bot-Erkennung, das ganze Programm. Ein einfacher Python-Request reicht daf\u00fcr nicht aus. <\/p>\n<p style=\"font-size: 14px; line-height: 1.6; color: #6b7280; margin: 8px 0 0 0;\">\u2022 Der einfachere Weg ist der \u201eWeb Unlocker\u201c von Floppydata \u2013 er umgeht die Anti-Bot-Sicherheitsma\u00dfnahmen und liefert Ihnen sauberen HTML-Code.<\/p>\n<p style=\"font-size: 14px; line-height: 1.6; color: #6b7280; margin: 8px 0 0 0;\">\u2022 Von da an ben\u00f6tigen Sie lediglich Python und BeautifulSoup, um Angebotsdaten f\u00fcr die Preisverfolgung, Recherche und Analyse abzurufen.<\/p>\n<p style=\"font-size: 14px; line-height: 1.6; color: #6b7280; margin: 8px 0 0 0;\">\u2022 Die meisten im Internet verf\u00fcgbaren Tutorials zum Thema Scraping sind bereits veraltet \u2013 eBay ist von <code>li.s-item<\/code> auf <code>li.s-card<\/code> umgezogen, und viele Selektoren wurden nie aktualisiert.<\/p>\n<p style=\"font-size: 14px; line-height: 1.6; color: #6b7280; margin: 8px 0 0 0;\">\u2022 Neue Floppydata-Konten erhalten f\u00fcnf kostenlose Datenerfassungen, sodass Sie diese Anleitung befolgen k\u00f6nnen, ohne im Voraus Kosten zu verursachen.<\/p>\n<\/div>\n<h2>Was versteht man eigentlich unter \u201eeBay-Scraping\u201c?<\/h2>\n<p>Ehrlich gesagt ist das ziemlich einfach. Sie extrahieren lediglich \u00f6ffentlich zug\u00e4ngliche Angebotsdaten von eBay-Seiten und wandeln diese in ein Format um, mit dem Sie arbeiten k\u00f6nnen \u2013 eine CSV-Datei, eine JSON-Datei oder was auch immer. Anstatt sich die Angebote einzeln durchzuklicken, erfasst ein Scraper all diese Daten auf einmal.  <\/p>\n<p>Bevor wir uns mit dem eigentlichen Code befassen, sollten Sie zwei Seitentypen kennen:<\/p>\n<ul>\n<li><strong>Suchergebnisseiten<\/strong>, die \u00dcbersichtsansicht mit Titel, Preis, Zustand, Versandinformationen und einem Link zum Angebot.<\/li>\n<li><strong>Artikel-Detailseiten<\/strong>, also die URLs im Format <code>\/itm\/ITEM_ID<\/code>, auf denen die tiefergehenden Informationen zu finden sind, wie vollst\u00e4ndige Beschreibungen, Verk\u00e4uferbewertungen, Artikelspezifikationen und Variantenoptionen.<\/li>\n<\/ul>\n<p>In diesem Tutorial konzentrieren wir uns auf Suchergebnisseiten, da die meisten Nutzer dort beginnen.<\/p>\n<h2>Warum sollten Sie Daten von eBay auslesen?<\/h2>\n<p>Sobald Sie diese Daten also abgerufen haben, k\u00f6nnen Sie ehrlich gesagt eine ganze Menge damit anfangen. Die Funktionen, die ich tats\u00e4chlich nutze: <\/p>\n<ol>\n<li><strong>Preis\u00fcberwachung.<\/strong>  Sie erhalten auf einen Blick einen \u00dcberblick dar\u00fcber, zu welchen Preisen Immobilien tats\u00e4chlich gehandelt werden \u2013 und zwar anhand von Tausenden aktiver und verkaufter Angebote. Dabei sind die verkauften Objekte besonders aussagekr\u00e4ftig, denn dort sehen Sie, was die K\u00e4ufer tats\u00e4chlich bezahlt haben \u2013 und nicht irgendeinen Wunschpreis, den ein Verk\u00e4ufer festgelegt und auf den er gehofft hat.<\/li>\n<li><strong>Wettbewerbsanalyse.<\/strong>  Sie k\u00f6nnen genau sehen, was sich verkauft, in welchem Zustand die Ware ist, wer sie verkauft und welchen Preis die Verk\u00e4ufer verlangen. Anstatt also zu raten, welchen Preis Sie festlegen sollen, wissen Sie es einfach.<\/li>\n<li><strong>Weiterverkauf und Arbitrage.<\/strong>  Das ist der Teil, der die Rechnungen bezahlt, denn die unterbewerteten Angebote sind derzeit auf dem Markt, und dank der Daten k\u00f6nnen Sie sie ausfindig machen und sich sichern, noch bevor andere sie \u00fcberhaupt entdecken.<\/li>\n<li><strong>Produktrecherche.<\/strong>  Bevor Sie echtes Geld in die Best\u00fcckung einer Kategorie investieren, k\u00f6nnen Sie die Zahlen auswerten und innerhalb weniger Minuten feststellen, ob tats\u00e4chlich eine Nachfrage besteht oder ob Sie lediglich Geld in Waren binden w\u00fcrden, die sich niemals verkaufen.<\/li>\n<li><strong>Verk\u00e4ufer\u00fcberwachung.<\/strong>  Und wenn Sie einen bestimmten Verk\u00e4ufer im Blick behalten m\u00f6chten, gehen Sie genau genauso vor: Sie geben einfach die URL seines Shops anstelle einer Suchanfrage ein, und schon liegen Ihnen sein gesamtes Sortiment und seine Preise direkt vor Augen.<\/li>\n<\/ol>\n<p>Wenn Ihre Arbeit in irgendeiner Weise mit Wiederverkauf, E-Commerce oder Preisgestaltung zu tun hat, sparen Sie mit solchen Daten unglaublich viel Zeit und k\u00f6nnen viel schneller fundiertere Entscheidungen treffen.<\/p>\n<h2>Warum nutzen Sie nicht einfach die offizielle API?<\/h2>\n<p>Ehrlich gesagt ist es f\u00fcr einfache Aufgaben keine schlechte Option. Die Browse-API bew\u00e4ltigt Abfragen mit moderatem Volumen bei aktiven Angeboten recht gut. Allerdings m\u00fcssen Sie zun\u00e4chst <strong>einen Genehmigungsprozess<\/strong> durchlaufen, es gibt Ratenbeschr\u00e4nkungen, die recht schnell greifen, und sie bietet Ihnen einfach nicht alle Funktionen.  <\/p>\n<p>Verkaufte Angebote sind nicht vorhanden, Bewertungen sind nicht vorhanden, und die vollst\u00e4ndigen Variantendaten sind nicht in der Form vorhanden, wie sie auf der eigentlichen Seite angezeigt werden. Wenn Sie also einen vollst\u00e4ndigen \u00dcberblick ben\u00f6tigen \u2013 also genau die Daten, die ein echter Nutzer beim Laden der Seite sieht \u2013, <strong>ist das Scraping einfach der praktischere Weg<\/strong>. <\/p>\n<p>Falls Sie sich in diesem Bereich noch nicht so gut auskennen, bietet Floppydata eine gute Einf\u00fchrung dazu, <a href=\"https:\/\/floppydata.com\/blog\/what-is-a-web-unblocker\/\">was ein Web-Unlocker eigentlich leistet<\/a>.<\/p>\n<h2>Was macht das Scraping bei eBay so schwierig?<\/h2>\n<p>Es ist nicht unm\u00f6glich, aber es gibt definitiv Faktoren, die Ihnen dabei im Weg stehen. Insbesondere zwei Dinge, mit denen die meisten Menschen zu k\u00e4mpfen haben. <\/p>\n<p>Ein Punkt ist die Bot-Erkennung. eBay nutzt CAPTCHAs und Ratenbegrenzungen, und eine IP-Adresse mit geringer Vertrauensw\u00fcrdigkeit wird Ihnen sehr schnell 403-Fehler einbringen. Au\u00dferdem wurden die Richtlinien Anfang 2026 versch\u00e4rft; gehen Sie also verantwortungsbewusst damit um: Nutzen Sie ausschlie\u00dflich \u00f6ffentliche Daten, halten Sie die Anfrageraten im normalen Bereich und vermeiden Sie alles, was Bestellungen oder \u00c4hnliches betrifft. Sie ben\u00f6tigen private IP-Adressen und ein Verhalten, das tats\u00e4chlich dem eines Browsers \u00e4hnelt \u2013 andernfalls erhalten Sie keine korrekten Antworten.   <\/p>\n<p>Zweitens geht es um die Markup-Struktur, und diese ist etwas t\u00fcckisch. W\u00e4hrend ich dies zusammenstellte, stellte ich fest, dass eBay bereits von <code>li.s-item<\/code> zu <code>li.s-card<\/code> umgezogen war \u2013 einschlie\u00dflich aller darin enthaltenen Seiten wie <code>.s-card__title<\/code>, <code>.s-card__price<\/code> und <code>.s-card__subtitle<\/code>. Die meisten Online-Anleitungen verweisen immer noch auf die alte Struktur, sodass sie nun einfach nicht mehr funktionieren. Ihre Selektoren werden irgendwann veraltet sein \u2013 so ist es nun einmal bei eBay \u2013, bauen Sie daher von Anfang an einige Sicherheitspr\u00fcfungen f\u00fcr fehlende Felder ein.   <\/p>\n<p>Jedenfalls leite ich deshalb alles \u00fcber den Web Unlocker von Floppydata weiter, anstatt mich direkt mit eBay auseinanderzusetzen.<\/p>\n<h2>Voraussetzungen<\/h2>\n<p>Drei Dinge:<\/p>\n<ul>\n<li>Python 3.10 oder h\u00f6her<\/li>\n<li>Ein Floppydata-Konto mit einem Web Unlocker-API-Schl\u00fcssel. Mit jedem neuen Konto erhalten Sie f\u00fcnf kostenlose Scrapes, sodass Sie diese gesamte Anleitung durcharbeiten k\u00f6nnen, ohne daf\u00fcr bezahlen zu m\u00fcssen. Den Schl\u00fcssel finden Sie im Web Unlocker-Dashboard.  <\/li>\n<li>Zwei Bibliotheken: \u201e <code>requests<\/code> \u201c und  <code>beautifulsoup4<\/code><\/li>\n<\/ul>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-45827\" src=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image3-3.png\" alt=\"Kontoeinstellungen und Informationen zum API-Schl\u00fcssel\" width=\"1785\" height=\"839\" srcset=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image3-3.png 1785w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image3-3-300x141.png 300w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image3-3-1024x481.png 1024w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image3-3-768x361.png 768w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image3-3-1536x722.png 1536w\" sizes=\"(max-width: 1785px) 100vw, 1785px\" \/><\/p>\n<p>Installieren Sie zun\u00e4chst die beiden Bibliotheken:<\/p>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code>pip install requests beautifulsoup4\n<\/code><\/pre>\n<p>Dann Ihr Projektordner:<\/p>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code>mkdir ebay-scraper\n<span style=\"color: #008000;\">cd<\/span> ebay-scraper\ntouch ebay_scraper.py\n<\/code><\/pre>\n<h2>Senden der ersten Anfrage<\/h2>\n<p>Als Erstes habe ich einfach eine einfache Anfrage gestellt, um zu sehen, was passiert:<\/p>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code><span style=\"color: #008000; font-weight: bold;\">import<\/span> <span style=\"color: #00f; font-weight: bold;\">requests<\/span>\n\nurl <span style=\"color: #666;\">=<\/span> <span style=\"color: #ba2121;\">\"https:\/\/www.ebay.com\/sch\/i.html?_nkw=mechanical+keyboard\"<\/span>\nresponse <span style=\"color: #666;\">=<\/span> requests<span style=\"color: #666;\">.<\/span>get(url)\n\n<span style=\"color: #008000;\">print<\/span>(response<span style=\"color: #666;\">.<\/span>status_code)\n<span style=\"color: #008000;\">print<\/span>(response<span style=\"color: #666;\">.<\/span>text[:<span style=\"color: #666;\">500<\/span>])\n<\/code><\/pre>\n<p>Seite blockieren. Keine Angebote, einfach nichts N\u00fctzliches. eBay erkennt eine einfache Python-Anfrage sofort \u2013 kein Fingerabdruck, keine vertrauensw\u00fcrdige IP-Adresse \u2013 das funktioniert einfach nicht. Anstatt also Zeit damit zu verschwenden, nutze ich einfach den Web Unlocker.   <\/p>\n<h2>Daten von eBay mit dem Floppydata Web Unlocker auslesen<\/h2>\n<p>Es k\u00fcmmert sich um all die l\u00e4stigen Dinge: private IP-Adressen, Browser-Fingerabdr\u00fccke, Seitenrendering und liefert Ihnen sauberes HTML zur\u00fcck. Es fallen nur bei erfolgreichen Scrapes Kosten an, sodass Sie bei fehlgeschlagenen Versuchen keine Credits verlieren. <\/p>\n<p>Ich teste immer zuerst im Dashboard-Playground (<a href=\"https:\/\/app.floppydata.com\/tools\/scrape\">No-Code-Web-Unlocker-Playground<\/a>), bevor ich etwas schreibe. F\u00fcgen Sie die Such-URL ein, klicken Sie auf \u201eScrape\u201c und sehen Sie sich die Ergebnisse an. Es ist viel einfacher, einen Parser zu erstellen, wenn man bereits wei\u00df, womit man es zu tun hat.  <\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-45836\" src=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image1-3.png\" alt=\"Screenshot der Benutzeroberfl\u00e4che eines Web-Scraping-Tools\" width=\"1400\" height=\"817\" srcset=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image1-3.png 1400w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image1-3-300x175.png 300w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image1-3-1024x598.png 1024w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image1-3-768x448.png 768w\" sizes=\"(max-width: 1400px) 100vw, 1400px\" \/><\/p>\n<p>Nun haben wir den HTML-Code, also kommen wir zum Programmieren.<\/p>\n<h3>Schritt 1: Erstellen Sie die Anfrage<\/h3>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code><span style=\"color: #008000; font-weight: bold;\">import<\/span> <span style=\"color: #00f; font-weight: bold;\">requests<\/span>\n<span style=\"color: #008000; font-weight: bold;\">import<\/span> <span style=\"color: #00f; font-weight: bold;\">json<\/span>\n<span style=\"color: #008000; font-weight: bold;\">from<\/span> <span style=\"color: #00f; font-weight: bold;\">bs4<\/span> <span style=\"color: #008000; font-weight: bold;\">import<\/span> BeautifulSoup\n\nAPI_URL <span style=\"color: #666;\">=<\/span> <span style=\"color: #ba2121;\">\"https:\/\/api.floppydata.net\/v1\/webUnlocker\"<\/span>\nAPI_KEY <span style=\"color: #666;\">=<\/span> <span style=\"color: #ba2121;\">\"YOUR_API_KEY\"<\/span>\n\nSEARCH_URL <span style=\"color: #666;\">=<\/span> <span style=\"color: #ba2121;\">\"https:\/\/www.ebay.com\/sch\/i.html?_nkw=mechanical+keyboard&_pgn=1\"<\/span>\nOUTPUT_FILE <span style=\"color: #666;\">=<\/span> <span style=\"color: #ba2121;\">\"ebay_listings.json\"<\/span>\n<\/code><\/pre>\n<p>Ersetzen Sie \u201e <code>YOUR_API_KEY<\/code> \u201c durch den Schl\u00fcssel aus Ihrem Dashboard.<\/p>\n<p>Au\u00dferdem ist <code>_pgn=1<\/code> lediglich die Seitenzahl. Wenn Sie die zweite Seite aufrufen m\u00f6chten, \u00e4ndern Sie die Adresse in <code>_pgn=2<\/code>. F\u00fcr die dritte Seite lautet die Adresse <code>_pgn=3<\/code>. Ganz einfach.   <\/p>\n<h3>Schritt 2: Holen Sie die Seite \u00fcber Web Unlocker<\/h3>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code><span style=\"color: #008000; font-weight: bold;\">def<\/span> <span style=\"color: #00f;\">fetch_html<\/span>(url):\n    response <span style=\"color: #666;\">=<\/span> requests<span style=\"color: #666;\">.<\/span>post(\n        API_URL,\n        headers<span style=\"color: #666;\">=<\/span>{\n            <span style=\"color: #ba2121;\">\"Content-Type\"<\/span>: <span style=\"color: #ba2121;\">\"application\/json\"<\/span>,\n            <span style=\"color: #ba2121;\">\"X-Api-Key\"<\/span>: API_KEY,\n        },\n        json<span style=\"color: #666;\">=<\/span>{\n            <span style=\"color: #ba2121;\">\"url\"<\/span>: url,\n            <span style=\"color: #ba2121;\">\"country\"<\/span>: <span style=\"color: #ba2121;\">\"US\"<\/span>,\n            <span style=\"color: #ba2121;\">\"city\"<\/span>: <span style=\"color: #ba2121;\">\"New York\"<\/span>,\n            <span style=\"color: #ba2121;\">\"difficulty\"<\/span>: <span style=\"color: #ba2121;\">\"medium\"<\/span>,\n            <span style=\"color: #ba2121;\">\"expiration\"<\/span>: <span style=\"color: #666;\">0<\/span>,\n        },\n        timeout<span style=\"color: #666;\">=120<\/span>,\n    )\n\n    response<span style=\"color: #666;\">.<\/span>raise_for_status()\n\n    data <span style=\"color: #666;\">=<\/span> response<span style=\"color: #666;\">.<\/span>json()\n    html <span style=\"color: #666;\">=<\/span> data<span style=\"color: #666;\">.<\/span>get(<span style=\"color: #ba2121;\">\"html\"<\/span>)\n\n    <span style=\"color: #008000; font-weight: bold;\">if<\/span> <span style=\"color: #a2f; font-weight: bold;\">not<\/span> html:\n        <span style=\"color: #008000; font-weight: bold;\">raise<\/span> <span style=\"color: #cb3f38; font-weight: bold;\">ValueError<\/span>(<span style=\"color: #ba2121;\">\"Unlocker response did not include an 'html' field.\"<\/span>)\n\n    <span style=\"color: #008000; font-weight: bold;\">return<\/span> html\n<\/code><\/pre>\n<p>Stellen Sie sicher, dass die Anfrage \u00fcber eine US-Privat-IP-Adresse geleitet wird, was sich sowohl auf die Preisgestaltung als auch darauf auswirkt, welche Angebote tats\u00e4chlich angezeigt werden. Die Schwierigkeitsstufe \u201e <code>medium<\/code> \u201c ist speziell f\u00fcr eBay die richtige Einstellung, da die Plattform \u00fcber einen strengen Bot-Schutz verf\u00fcgt. Bei einer niedrigeren Einstellung werden Sie einfach blockiert. Die Einstellung \u201eExpiration\u201c <code>0<\/code> sorgt daf\u00fcr, dass jedes Mal eine neue Seite geladen wird, anstatt eine zwischengespeicherte Antwort abzurufen. Der gerenderte HTML-Code wird im Feld \u201e <code>html<\/code> \u201c des JSON-Objekts zur\u00fcckgegeben, und genau diesen analysiert BeautifulSoup im n\u00e4chsten Schritt. Wenn Sie alle verf\u00fcgbaren Parameter einsehen m\u00f6chten, finden Sie diese vollst\u00e4ndig in der <a href=\"https:\/\/floppydata.com\/docs\/api-reference\/endpoint\/web-unlocker\">Web Unlocker-API-Referenz<\/a>.     <\/p>\n<h3>Schritt 3: Extrahieren Sie die Inserate<\/h3>\n<p>Jedes Ergebnis auf der Suchseite ist ein  <code>li.s-card<\/code>  container. Um eBay-Angebote sauber auszulesen, durchlaufen wir jede Karte in einer Schleife und extrahieren die gew\u00fcnschten Felder. Dabei f\u00fchren wir Sicherheitspr\u00fcfungen durch, damit ein fehlendes Feld den Ablauf niemals zum Absturz bringt: <\/p>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code><span style=\"color: #008000; font-weight: bold;\">def<\/span> <span style=\"color: #00f;\">extract_listings<\/span>(html):\n    soup <span style=\"color: #666;\">=<\/span> BeautifulSoup(html, <span style=\"color: #ba2121;\">\"html.parser\"<\/span>)\n    cards <span style=\"color: #666;\">=<\/span> soup<span style=\"color: #666;\">.<\/span>select(<span style=\"color: #ba2121;\">\"li.s-card\"<\/span>)\n    listings <span style=\"color: #666;\">=<\/span> []\n\n    <span style=\"color: #008000; font-weight: bold;\">for<\/span> card <span style=\"color: #a2f; font-weight: bold;\">in<\/span> cards:\n        title_el <span style=\"color: #666;\">=<\/span> card<span style=\"color: #666;\">.<\/span>select_one(<span style=\"color: #ba2121;\">\".s-card__title\"<\/span>)\n        title <span style=\"color: #666;\">=<\/span> title_el<span style=\"color: #666;\">.<\/span>get_text(<span style=\"color: #ba2121;\">\" \"<\/span>, strip<span style=\"color: #666;\">=<\/span><span style=\"color: #008000; font-weight: bold;\">True<\/span>) <span style=\"color: #008000; font-weight: bold;\">if<\/span> title_el <span style=\"color: #008000; font-weight: bold;\">else<\/span> <span style=\"color: #008000; font-weight: bold;\">None<\/span>\n\n        <span style=\"color: #008000; font-weight: bold;\">if<\/span> title:\n            <span style=\"color: #3d7b7b; font-style: italic;\"># eBay appends this as accessibility text<\/span>\n            title <span style=\"color: #666;\">=<\/span> title<span style=\"color: #666;\">.<\/span>replace(<span style=\"color: #ba2121;\">\"Opens in a new window or tab\"<\/span>, <span style=\"color: #ba2121;\">\"\"<\/span>)<span style=\"color: #666;\">.<\/span>strip()\n\n        <span style=\"color: #3d7b7b; font-style: italic;\"># Skip the placeholder card at the top of search results<\/span>\n        <span style=\"color: #008000; font-weight: bold;\">if<\/span> <span style=\"color: #a2f; font-weight: bold;\">not<\/span> title <span style=\"color: #a2f; font-weight: bold;\">or<\/span> title <span style=\"color: #666;\">==<\/span> <span style=\"color: #ba2121;\">\"Shop on eBay\"<\/span>:\n            <span style=\"color: #008000; font-weight: bold;\">continue<\/span>\n\n        price_el <span style=\"color: #666;\">=<\/span> card<span style=\"color: #666;\">.<\/span>select_one(<span style=\"color: #ba2121;\">\".s-card__price\"<\/span>)\n        condition_el <span style=\"color: #666;\">=<\/span> card<span style=\"color: #666;\">.<\/span>select_one(<span style=\"color: #ba2121;\">\".s-card__subtitle\"<\/span>)\n\n        <span style=\"color: #3d7b7b; font-style: italic;\"># Shipping info sits inside attribute rows<\/span>\n        shipping <span style=\"color: #666;\">=<\/span> <span style=\"color: #008000; font-weight: bold;\">None<\/span>\n\n        <span style=\"color: #008000; font-weight: bold;\">for<\/span> row <span style=\"color: #a2f; font-weight: bold;\">in<\/span> card<span style=\"color: #666;\">.<\/span>select(<span style=\"color: #ba2121;\">\".s-card__attribute-row\"<\/span>):\n            text <span style=\"color: #666;\">=<\/span> row<span style=\"color: #666;\">.<\/span>get_text(<span style=\"color: #ba2121;\">\" \"<\/span>, strip<span style=\"color: #666;\">=<\/span><span style=\"color: #008000; font-weight: bold;\">True<\/span>)\n\n            <span style=\"color: #008000; font-weight: bold;\">if<\/span> <span style=\"color: #008000;\">any<\/span>(word <span style=\"color: #a2f; font-weight: bold;\">in<\/span> text<span style=\"color: #666;\">.<\/span>lower() <span style=\"color: #008000; font-weight: bold;\">for<\/span> word <span style=\"color: #a2f; font-weight: bold;\">in<\/span> (<span style=\"color: #ba2121;\">\"ship\"<\/span>, <span style=\"color: #ba2121;\">\"free\"<\/span>, <span style=\"color: #ba2121;\">\"delivery\"<\/span>)):\n                shipping <span style=\"color: #666;\">=<\/span> text\n                <span style=\"color: #008000; font-weight: bold;\">break<\/span>\n\n        <span style=\"color: #3d7b7b; font-style: italic;\"># Grab the first link that points to an item detail page<\/span>\n        url <span style=\"color: #666;\">=<\/span> <span style=\"color: #008000; font-weight: bold;\">None<\/span>\n\n        <span style=\"color: #008000; font-weight: bold;\">for<\/span> a <span style=\"color: #a2f; font-weight: bold;\">in<\/span> card<span style=\"color: #666;\">.<\/span>select(<span style=\"color: #ba2121;\">\"a.s-card__link\"<\/span>):\n            href <span style=\"color: #666;\">=<\/span> a<span style=\"color: #666;\">.<\/span>get(<span style=\"color: #ba2121;\">\"href\"<\/span>)\n\n            <span style=\"color: #008000; font-weight: bold;\">if<\/span> href <span style=\"color: #a2f; font-weight: bold;\">and<\/span> <span style=\"color: #ba2121;\">\"\/itm\/\"<\/span> <span style=\"color: #a2f; font-weight: bold;\">in<\/span> href:\n                url <span style=\"color: #666;\">=<\/span> href<span style=\"color: #666;\">.<\/span>split(<span style=\"color: #ba2121;\">\"?\"<\/span>)[<span style=\"color: #666;\">0<\/span>]\n                <span style=\"color: #008000; font-weight: bold;\">break<\/span>\n\n        listings<span style=\"color: #666;\">.<\/span>append({\n            <span style=\"color: #ba2121;\">\"title\"<\/span>: title,\n            <span style=\"color: #ba2121;\">\"price\"<\/span>: price_el<span style=\"color: #666;\">.<\/span>get_text(<span style=\"color: #ba2121;\">\" \"<\/span>, strip<span style=\"color: #666;\">=<\/span><span style=\"color: #008000; font-weight: bold;\">True<\/span>) <span style=\"color: #008000; font-weight: bold;\">if<\/span> price_el <span style=\"color: #008000; font-weight: bold;\">else<\/span> <span style=\"color: #008000; font-weight: bold;\">None<\/span>,\n            <span style=\"color: #ba2121;\">\"condition\"<\/span>: condition_el<span style=\"color: #666;\">.<\/span>get_text(<span style=\"color: #ba2121;\">\" \"<\/span>, strip<span style=\"color: #666;\">=<\/span><span style=\"color: #008000; font-weight: bold;\">True<\/span>) <span style=\"color: #008000; font-weight: bold;\">if<\/span> condition_el <span style=\"color: #008000; font-weight: bold;\">else<\/span> <span style=\"color: #008000; font-weight: bold;\">None<\/span>,\n            <span style=\"color: #ba2121;\">\"shipping\"<\/span>: shipping,\n            <span style=\"color: #ba2121;\">\"url\"<\/span>: url,\n        })\n\n    <span style=\"color: #008000; font-weight: bold;\">return<\/span> listings\n<\/code><\/pre>\n<p>Zwei Dinge, die Sie beachten sollten.<\/p>\n<ul>\n<li>eBay platziert immer eine <strong>Platzhalterkarte mit der Aufschrift \u201eShop on eBay\u201c<\/strong> ganz oben in den Suchergebnissen. Wenn Sie diese nicht \u00fcberspringen, ist der erste Eintrag in der Liste der Angebote lediglich nutzloser M\u00fcll. <\/li>\n<li>Der Titel \u00fcbernimmt zudem <strong>den Text<\/strong> \u201eWird in einem neuen Fenster oder Tab ge\u00f6ffnet\u201c als <strong>Barrierefreiheitstext<\/strong> aus dem Anker-Tag, sodass die Ersetzungszeile diesen bereinigt, bevor etwas angeh\u00e4ngt wird.<\/li>\n<\/ul>\n<h3>Schritt 4: Speichern Sie die Ergebnisse<\/h3>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code><span style=\"color: #008000; font-weight: bold;\">def<\/span> <span style=\"color: #00f;\">main<\/span>():\n    <span style=\"color: #008000;\">print<\/span>(<span style=\"color: #ba2121;\">f\"Fetching data from: <\/span><span style=\"color: #a45a77; font-weight: bold;\">{<\/span>SEARCH_URL<span style=\"color: #a45a77; font-weight: bold;\">}<\/span><span style=\"color: #ba2121;\">\"<\/span>)\n\n    html <span style=\"color: #666;\">=<\/span> fetch_html(SEARCH_URL)\n    listings <span style=\"color: #666;\">=<\/span> extract_listings(html)\n\n    <span style=\"color: #008000; font-weight: bold;\">if<\/span> <span style=\"color: #a2f; font-weight: bold;\">not<\/span> listings:\n        <span style=\"color: #008000; font-weight: bold;\">raise<\/span> <span style=\"color: #cb3f38; font-weight: bold;\">SystemExit<\/span>(<span style=\"color: #ba2121;\">\"No listings found. eBay may have changed its markup.\"<\/span>)\n\n    <span style=\"color: #008000; font-weight: bold;\">with<\/span> <span style=\"color: #008000;\">open<\/span>(OUTPUT_FILE, <span style=\"color: #ba2121;\">\"w\"<\/span>, encoding<span style=\"color: #666;\">=<\/span><span style=\"color: #ba2121;\">\"utf-8\"<\/span>) <span style=\"color: #008000; font-weight: bold;\">as<\/span> file:\n        json<span style=\"color: #666;\">.<\/span>dump(listings, file, indent<span style=\"color: #666;\">=2<\/span>)\n\n    <span style=\"color: #008000;\">print<\/span>(<span style=\"color: #ba2121;\">f\"Found <\/span><span style=\"color: #a45a77; font-weight: bold;\">{<\/span><span style=\"color: #008000;\">len<\/span>(listings)<span style=\"color: #a45a77; font-weight: bold;\">}<\/span><span style=\"color: #ba2121;\"> listings\"<\/span>)\n    <span style=\"color: #008000;\">print<\/span>(<span style=\"color: #ba2121;\">f\"Saved results to <\/span><span style=\"color: #a45a77; font-weight: bold;\">{<\/span>OUTPUT_FILE<span style=\"color: #a45a77; font-weight: bold;\">}<\/span><span style=\"color: #ba2121;\">\"<\/span>)\n\n\n<span style=\"color: #008000; font-weight: bold;\">if<\/span> <span style=\"color: #19177c;\">__name__<\/span> <span style=\"color: #666;\">==<\/span> <span style=\"color: #ba2121;\">\"__main__\"<\/span>:\n    main()\n<\/code><\/pre>\n<p>F\u00fchren Sie das Skript aus:<\/p>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code>python ebay_scraper.py\n<\/code><\/pre>\n<p>Und Sie sollten etwa Folgendes sehen:<\/p>\n<pre style=\"background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px; padding: 18px; margin: 0; font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;\"><code>[\n  {\n    <span style=\"color: #008000; font-weight: bold;\">\"title\"<\/span>: <span style=\"color: #ba2121;\">\"MSI Forge GK600 TKL Wireless Mechanical Keyboard RGB Bluetooth 2.4GHz\"<\/span>,\n    <span style=\"color: #008000; font-weight: bold;\">\"price\"<\/span>: <span style=\"color: #ba2121;\">\"$49.99\"<\/span>,\n    <span style=\"color: #008000; font-weight: bold;\">\"condition\"<\/span>: <span style=\"color: #ba2121;\">\"Brand New\"<\/span>,\n    <span style=\"color: #008000; font-weight: bold;\">\"shipping\"<\/span>: <span style=\"color: #ba2121;\">\"Free shipping\"<\/span>,\n    <span style=\"color: #008000; font-weight: bold;\">\"url\"<\/span>: <span style=\"color: #ba2121;\">\"https:\/\/www.ebay.com\/itm\/227344950627\"<\/span>\n  }\n]\n<\/code><\/pre>\n<p><img decoding=\"async\" class=\"alignnone wp-image-45845 size-full\" src=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image2-5.png\" alt=\"Liste der zum Verkauf stehenden Computertastaturen\" width=\"1119\" height=\"697\" srcset=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image2-5.png 1119w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image2-5-300x187.png 300w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image2-5-1024x638.png 1024w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/06\/image2-5-768x478.png 768w\" sizes=\"(max-width: 1119px) 100vw, 1119px\" \/><\/p>\n<p>So funktioniert der einfache Scraper.<\/p>\n<p>Von hier aus k\u00f6nnen Sie das Schl\u00fcsselwort \u00e4ndern, indem Sie einfach \u201e <code>_nkw=mechanical+keyboard<\/code> \u201c in der URL \u00e4ndern. Wenn Sie eine andere Seite aufrufen m\u00f6chten, k\u00f6nnen Sie von <code>_pgn=1<\/code> zu <code>_pgn=2<\/code>, <code>_pgn=3<\/code> usw. wechseln. <\/p>\n<h2>Fehlerbehebung<\/h2>\n<p>Es liegt also auf der Hand: Wenn Sie lange genug auf eBay st\u00f6bern, werden Sie wahrscheinlich auf eines dieser Angebote sto\u00dfen:<\/p>\n<ul>\n<li><strong>403-Fehler:<\/strong> eBay hat Ihre IP-Adresse gesperrt. Die L\u00f6sung besteht darin, den Web Unlocker mit privaten IP-Adressen zu nutzen. <\/li>\n<li><strong>Leere Antworten:<\/strong> In der Regel handelt es sich um ein Darstellungsproblem. Vergewissern Sie sich, dass Sie aus dem Feld \u201e <code>html<\/code> \u201c in der Antwort des Web Unlockers lesen und nicht aus dem rohen JSON-Body. <\/li>\n<li><strong>Fehlende Felder:<\/strong> Nicht bei jedem Angebot sind Angaben zum Zustand oder zum Versand vorhanden. Die Sicherheitspr\u00fcfungen unter <code>extract_listings<\/code> ber\u00fccksichtigen dies bereits. <\/li>\n<li><strong>\u00dcberhaupt keine Ergebnisse:<\/strong> eBay hat seine CSS-Klassennamen erneut ge\u00e4ndert. Kehren Sie zum Testbereich zur\u00fcck, \u00fcberpr\u00fcfen Sie den neuen Markup-Code und passen Sie Ihre Selektoren entsprechend an. <\/li>\n<\/ul>\n<h2>Ihr n\u00e4chster Schritt<\/h2>\n<p>Sehen Sie, eBay ist zwar nicht gerade die schwierigste Plattform, aber angesichts der CAPTCHAs, der Ratenbegrenzung und der Tatsache, dass sich die Preisaufschl\u00e4ge manchmal einfach so \u00e4ndern, verschwenden Sie ohne die richtige Konfiguration nur Ihre Zeit. Wenn Sie den Datenabruf \u00fcber einen Dienst abwickeln, der all das f\u00fcr Sie \u00fcbernimmt, k\u00f6nnen Sie sich direkt der eigentlichen Arbeit mit den Daten widmen. <\/p>\n<p>Genau darin liegt die St\u00e4rke <a href=\"https:\/\/floppydata.com\/web-unlocker\/\">des \u201eWeb Unlocker\u201c von Floppydata<\/a>. Rotation von Privat-Proxys, echte Browser-Fingerabdr\u00fccke, Vollseiten-Rendering \u2013 und Sie zahlen nur f\u00fcr erfolgreiche Antworten, sodass fehlgeschlagene Abrufe Sie nichts kosten. F\u00fcgen Sie noch ein paar Zeilen BeautifulSoup hinzu, und das Ganze wird, ehrlich gesagt, ziemlich unkompliziert.  <\/p>\n<p>Mit jedem neuen Konto erhalten Sie f\u00fcnf kostenlose Scrapes, sodass Sie diesen gesamten Leitfaden durcharbeiten k\u00f6nnen, ohne etwas bezahlen zu m\u00fcssen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>eBay verf\u00fcgt \u00fcber eine wahre Goldgrube an \u00f6ffentlich zug\u00e4nglichen Preisdaten. Millionen aktueller Angebote aus den Bereichen Sammlerst\u00fccke, Elektronik, Auslaufartikel und vieles mehr \u2013 all dies eignet sich hervorragend f\u00fcr die Preisbeobachtung, Marktforschung oder Wettbewerbsanalyse. Das Problem besteht darin, zuverl\u00e4ssig an diese Daten heranzukommen. Mit einem einfachen Python-Skript kommen Sie vielleicht ein paar Seiten weit, bevor [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":45805,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[440,489,562],"tags":[],"class_list":["post-45888","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-how-to","category-scraping"],"acf":[],"_links":{"self":[{"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/posts\/45888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/comments?post=45888"}],"version-history":[{"count":0,"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/posts\/45888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/media\/45805"}],"wp:attachment":[{"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/media?parent=45888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/categories?post=45888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/floppydata.com\/de\/wp-json\/wp\/v2\/tags?post=45888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}