Preisvergleich, 3 ShopsEntwicklung & Anpassung

Ein Python-Parser, der die Preise derselben Produkte in 3 öffentlichen Onlineshops in einer Tabelle vergleicht

Meist in 15 Minuten fertigÜberarbeitungen inklusiveQualitätsprüfung
Pakete
ZahlungsschutzMehr dazu
  • Überarbeitungen im Rahmen des Pakets sind kostenlos.
  • Reagieren Sie nicht innerhalb von 3 Tagen nach der Lieferung, gilt die Arbeit automatisch als abgenommen.

Das Geld wird bei der Zahlung reserviert und erst freigegeben, wenn Sie die Arbeit abnehmen.

Ein Python-Parser, der die Preise derselben Produkte in 3 öffentlichen Onlineshops in einer Tabelle vergleicht

Beispielergebnis

Beispiel für das Standard-Paket

Parser für den Katalog eines Gartengeräte-Lieferanten nach Excel

So sieht das Ergebnis aus

Artikelnr.BezeichnungPreisVerfügbarGewichtFoto
GT-1042Gartenschere, 20 mm18,90Ja0,24 kg…/gt-1042.jpg
GT-1187Klappsäge, 210 mm24,50Ja0,31 kg…/gt-1187.jpg
GT-2210Heckenschere, Wellenschliff39,00Nein1,10 kg…/gt-2210.jpg
GT-3305Handschaufel, Edelstahl9,80Ja0,18 kg…/gt-3305.jpg
GT-4120Gartenschlauch 25 m, 1/2"42,00Ja2,90 kg…/gt-4120.jpg

Die Datei im Beispiel enthält 1.236 Produkte von 52 Listenseiten.

Ein Teil des Codes

def product_links(list_url: str) -> Iterator[str]:
    """Links zu den Produktseiten von jeder Seite der Liste, dem Link „Weiter“ folgend."""
    url: str | None = list_url
    while url:
        page = fetch(url)
        for card in page.select("div.product-card a.title"):
            yield urljoin(url, card["href"])
        next_link = page.select_one("a.pagination-next")
        url = urljoin(url, next_link["href"]) if next_link else None


def fetch(url: str) -> BeautifulSoup:
    """Eine öffentliche Seite in höflichem Tempo: eine Pause zwischen Anfragen und einige Versuche bei Fehlern."""
    for attempt in range(3):
        time.sleep(settings.delay_seconds)
        response = session.get(url, timeout=30)
        if response.status_code == 200:
            return BeautifulSoup(response.text, "html.parser")
        log.warning("%s antwortete mit %s, Versuch %d von 3", url, response.status_code, attempt + 1)
    raise ScraperError(f"{url} ließ sich nach 3 Versuchen nicht öffnen")

Dateien: ein ZIP-Archiv mit scraper.py, settings.ini (die Startseite, die Pause zwischen Anfragen, der Dateiname), requirements.txt und einer README zu Installation und Start. Er liest nur öffentlich zugängliche Seiten, eine alle 2 Sekunden, und prüft zuerst die robots.txt der Website. Der Kunde startet ihn auf seinem eigenen Computer.

Kunde: ein Online-Gartenshop, der die Geräte eines Lieferanten weiterverkauft; der Lieferant hat einen öffentlichen Katalog auf seiner Website, aber keine Preislistendatei. Aufgabe: die Listenseiten des Katalogs durchlaufen, jede Produktseite öffnen und Artikelnummer, Bezeichnung, Preis, Verfügbarkeit, Gewicht und den Link zum Hauptfoto in Excel speichern, um einmal pro Woche die Preise zu vergleichen.

Kunde und alle Angaben sind erfunden.

Über diese Leistung

Dieser Parser stellt die Preise derselben Produkte aus bis zu drei öffentlichen Onlineshops nebeneinander: eine Zeile pro Produkt, mit Preis, altem Preis, Verfügbarkeit und Link jedes Shops sowie dem Datum der Prüfung. Die drei Shops gibt es mit Premium; Basis und Standard lesen einen Shop, als Einstieg oder Test. Produkte werden über eine Nummer zugeordnet, die die Shops anzeigen, etwa einen Barcode oder eine Herstellerartikelnummer, oder über die Links, die Sie für jedes Produkt auflisten: Namen allein unterscheiden sich zu sehr für eine sichere Zuordnung. Schicken Sie die Websites, je eine aus Ihrem Browser gespeicherte Produktseite und Ihre Produktliste. Sie erhalten Python-Code mit einer Einstellungsdatei und einer README und starten ihn auf Ihrem Computer. Er liest öffentlich zugängliche Seiten in höflichem Tempo, meldet sich nie an, umgeht keine Captchas oder Schutzmaßnahmen und liest weder Amazon noch Google. Ob die Nutzungsbedingungen der Shops das erlauben, entscheiden Sie; eine spätere Änderung des Aufbaus erfordert eine Aktualisierung.

Was enthalten ist

  • Das erhalten SieEin ZIP-Archiv mit dem Python-Code, einer Einstellungsdatei und einer README mit Schritt-für-Schritt-Anleitung; der Code wird auch auf der Bestellseite angezeigt.
  • Eine Zeile pro ProduktPreis, Verfügbarkeit und Link jedes Shops nebeneinander
  • Zugeordnet über Nummer oder Ihre LinksBarcode, Herstellerartikelnummer oder von Ihnen aufgelistete Links
  • Datum der PrüfungIn jeder Zeile, damit sich Durchläufe vergleichen lassen
  • Höfliches TempoEine Pause zwischen den Seiten, in den Einstellungen festgelegt
  • Läuft auf Ihrem ComputerWindows, macOS oder Linux, mit Python

So funktioniert es

  1. 1
    ShopsSie nennen die Shops, gespeicherte Produktseiten und Ihre Produktliste
  2. 2
    ParserWir schreiben den Code und die Anleitung zum Ausführen
  3. 3
    StartSie starten ihn und prüfen einige Zeilen in jedem Shop
  4. 4
    ÜberarbeitungenSie wünschen Überarbeitungen im Rahmen Ihres Pakets und schicken etwaige Fehlermeldungen

Was wir von Ihnen brauchen

Die drei Shops (oder einer bei Basis und Standard) und je eine Produktseite davon, aus Ihrem Browser gespeichert (Datei > Seite speichern unter). Ihre Produktliste mit der Nummer, die die Shops anzeigen, etwa einem Barcode, oder eine Tabelle mit dem Link jedes Produkts in jedem Shop. Die benötigten Felder pro Shop, z. B. Preis, alter Preis, Verfügbarkeit, Link. Ungefähr wie viele Produkte. CSV, Excel oder JSON.

Wir fragen Sie:

  • Welche Shops?
  • Wie Produkte zugeordnet werden
  • Die Felder pro Shop
  • Ungefähr wie viele Produkte?

Pakete vergleichen

PaketeBasisEin Shop für den Einstieg19 €StandardEin Shop, ganze Kategorie38 €Premium3 Shops in einer Tabelle68 €
Lieferzeit1 Tag2 Tage3 Tage
Überarbeitungen123
Websites11bis zu 3
Seitentypen12 (Kategorie und Produkt)bis zu 3
Felderbis zu 10bis zu 25bis zu 25 pro Seitentyp
Durchläuft die Seiten einer ListeNeinJaJa
ErgebnisdateiCSVExcel oder CSVExcel, CSV oder JSON
Duplikate entfernt, setzt dort fort, wo er aufgehört hatNeinNeinJa
Bestellen BasisBestellen StandardBestellen Premium

Zahlungsschutz

Sie bezahlen bei der Bestellung, aber das Geld wird nur für abgenommene Arbeit freigegeben.

  • FestpreisDer Paketpreis ändert sich nach der Zahlung nicht mehr.
  • Das Geld wird reserviertBei der Zahlung wird der Betrag nur reserviert. Freigegeben wird er erst, wenn Sie die Arbeit abnehmen.
  • Vor der Lieferung geprüftJedes Ergebnis durchläuft eine Qualitätsprüfung, bevor es Sie erreicht, und Sie sehen es auf der Bestellseite, bevor Sie es abnehmen.
  • Kostenlose ÜberarbeitungenFordern Sie Überarbeitungen im Rahmen Ihres Briefings so oft an, wie das Paket es erlaubt.
  • Abnahme nach 3 TagenWenn Sie die Arbeit innerhalb von 3 Tagen nach der Lieferung weder abnehmen noch eine Überarbeitung anfordern, gilt sie automatisch als abgenommen. Schreiben Sie nach der Lieferung im Bestell-Chat, wartet die Bestellung; sobald wir antworten, können wir die 3 Tage neu starten und teilen das im Chat mit.
  • Neuanfertigung oder volle RückerstattungWenn das Ergebnis nicht Ihrem Briefing entspricht und die Überarbeitungen das nicht behoben haben oder die Arbeit mehr als doppelt so lange dauert wie die Frist, schreiben Sie im Bestell-Chat: Wir erstellen die Arbeit neu oder erstatten die Zahlung vollständig.
So funktioniert es →

Fragen und Antworten

Warum vergleicht nur Premium 3 Shops?

Jeder Shop hat eigene Seiten und braucht daher einen eigenen Teil des Codes. Basis und Standard decken einen Shop ab, was eine gute Möglichkeit ist, es zuerst auszuprobieren.

Was, wenn ein Shop keinen Barcode anzeigt?

Dann geben Sie uns eine Tabelle mit dem Link jedes Produkts in jedem Shop. Wir ordnen Produkte nicht durch Raten anhand ihrer Namen zu.

Kann er Amazon, Google Shopping oder Shops in sozialen Netzwerken einbeziehen?

Nein. Amazon, Google, LinkedIn und soziale Netzwerke sind ausgeschlossen: Deren Nutzungsbedingungen verbieten es. Bei anderen Shops entscheiden Sie, ob deren Bedingungen es erlauben.

Kann er auch Versandkosten vergleichen?

Nur wenn die Produktseite sie jedem Besucher zeigt. Er legt nie etwas in einen Warenkorb, gibt keine Adresse ein und meldet sich nie an.

Keine Antwort gefunden?

Pakete