Inleiding tot Ebay API met Python The Finding API - Deel 2

  • Noah Scott
  • 0
  • 703
  • 105
>

In het vorige artikel hebben we gezien hoe we de voorbereidende stappen kunnen uitvoeren om onze werkomgeving voor te bereiden, een Ebay-ontwikkelaar en een sandbox-account te maken en de sleutels en inloggegevens te genereren die nodig zijn om API-aanroepen uit te voeren. In dit nieuwe hoofdstuk maken we ons eerste verzoek en voeren we onze eerste oproep uit, gericht op de "Finding API"

In deze tutorial leer je:
  • Wat zijn de mogelijke "Finding API" -oproepen;
  • Wat zijn de parameters die u kunt gebruiken om uw oproep aan te passen;
  • Hoe een verzoek te bouwen met de python SDK;
  • Hoe u een API-aanroep uitvoert;
Inleiding tot Ebay API met python: The Finding API - Deel 2

Gebruikte softwarevereisten en -conventies

Softwarevereisten en Linux Command Line-conventies
Categorie Vereisten, conventies of gebruikte softwareversie
Systeem Besturingssysteem agnostisch.
Software git en python3
Andere Kennis van de programmeertaal Python en van de objectgeoriënteerde basisconcepten.
Conventies # - vereist dat gegeven linux-commando's worden uitgevoerd met root-privileges, hetzij direct als rootgebruiker, hetzij door gebruik van sudo opdracht
$ - vereist dat gegeven linux-commando's worden uitgevoerd als een gewone niet-geprivilegieerde gebruiker

De Vinden API

De Vinden API is de eerste die we onderzoeken in deze reeks artikelen over programmatische interactie met Ebay door python en de Python-SDK van Ebay te gebruiken. Deze API biedt oproepen die zowel voor kopers als verkopers erg handig kunnen zijn en geeft ons toegang tot de zoekmogelijkheden van het Ebay-platform, waardoor we een snellere manier hebben om gegevens op te halen en te manipuleren in vergelijking met webscraping-technieken..

De Finding API-aanroepen

De volgende zijn naar mijn mening de meest relevante oproepen van de Vinden API:

  • findItemsAdvanced - Laten we complexe zoekopdrachten uitvoeren en filters toepassen;
  • findItemsByCategory - Laten we artikelen zoeken die tot een specifieke categorie behoren;
  • findItemsByKeywords - Met deze oproep kunnen we items vinden op basis van trefwoorden;
  • findItemsByProduct - Met deze oproep kunnen we items vinden op basis van ID's zoals ISBN, EAN, UPC en ePID;

U vindt de volledige lijst met beschikbare oproepen voor de API vinden op de speciale pagina. In deze tutorial zullen we ons echter concentreren op de findItemsByKeywords bellen.



Voordat we beginnen

In het vorige artikel van deze serie hebben we onze werkomgeving opgezet, daarom ga ik er vanaf nu vanuit dat je de Ebay python SDK correct hebt geïnstalleerd en je API-sleutels hebt aangemaakt. Omdat we werken met de Vinden API kunnen we direct op de productiesite werken.

Laten we dan beginnen. Als eerste maken we een map als basis van ons project; we zullen het (verrassend) "ebay" noemen:

$ mkdir ebay

In deze map moeten we onze inloggegevens opslaan in het ebay.yaml bestand, zoals we in het vorige artikel hebben besproken. Je kunt een sjabloon van dit bestand vinden in de root van de github-repository die we hebben gekloond. Hier is de inhoud van mijn ebay.yaml bestand, waarin ik mijn inloggegevens al heb ingevoerd:

Inhoud van het eBay API-configuratiebestand

Zoals u kunt zien, is alles wat we nodig hebben om te verstrekken in de sectie gewijd aan de API vinden, is de App-ID voor onze productieomgeving.



Onze eerste API-oproep

Ebay accepteert standaard API-verzoeken en verstrekt in de vorm van xml structuren: wat ons mogelijk maakt om op een objectgeoriënteerde manier met die elementen te communiceren, is de Python SDK. Nu we onze inloggegevens hebben, kunnen we beginnen met het maken van ons eerste API-verzoek. Maak een nieuw bestand en noem het findbykeywords.py, binnenin het eerste dat we moeten doen, is de benodigde modules importeren:

#! / usr / bin / env python3 van ebaysdk.finding import Connection 

Het volgende dat u moet doen, is een exemplaar van het Verbinding klas, hier is hoe we het doen:

api = Verbinding (config_file = 'ebay.yaml', siteid = "EBAY-US")

We hebben enkele parameters doorgegeven aan de constructor van de Verbinding klasse: config_file, en Website ID. De eerste is nodig om het pad te specificeren naar het bestand dat onze referenties bevat: aangezien de waarde standaard dezelfde is als degene die we hebben opgegeven, hadden we deze kunnen weglaten. De tweede argumenten die nodig zijn om de Ebay-landsite te specificeren waarnaar het verzoek moet worden verwezen: "EBAY-US" is de standaard. Als ik mijn zoekopdracht op de Italiaanse site had willen uitvoeren, zou ik bijvoorbeeld hebben gebruikt "EBAY-IT" in plaats daarvan. Veel andere parameters kunnen worden doorgegeven om de standaardconfiguratie aan te passen, maar voor zover bekend is onze setup voldoende. Laten we verder gaan.

We hebben ons exemplaar van het Verbinding class, nu moeten we een verzoek bouwen, dat zal worden opgenomen in de API-aanroep. Dankzij de python SDK kunnen we een verzoek vertegenwoordigen met een woordenboek, de parameters specificeren met sleutel / waarde-paren:

request = 'keywords': 'lord of the rings', 

Het bovenstaande is het minimaal mogelijke verzoek voor de findItemsByKeywords bellen: we hebben zojuist de trefwoorden gespecificeerd om te zoeken. Dit is mogelijk omdat 'trefwoorden' is de enige vereiste parameter voor deze aanroep.

Afhankelijk van de oproep die we willen uitvoeren, kunnen we vele andere parameters gebruiken om ons verzoek te verfijnen. Om precies alle beschikbare verzoekparameters voor een specifieke oproep te kennen, kunt u de behoorlijk gedetailleerde Ebay-documentatie ervoor raadplegen.

Onze zoekopdracht beperken met een filter

We kunnen een lijst met filters binnen ons verzoek specificeren, zodat het aantal geretourneerde resultaten wordt verminderd. Binnen het verzoek, het itemFilter key is gekoppeld aan een array met alle filters, elk in de vorm van een woordenboek, waarbij de naam key is gekoppeld aan een tekenreeks die de filternaam vertegenwoordigt, en de waarde één is gekoppeld aan de werkelijke waarde die voor het filter moet worden gebruikt. Laten we een voorbeeld bekijken. Stel dat we een filter aan ons verzoek willen toevoegen om onze zoekopdracht te beperken tot alleen "nieuwe" items:

request = 'keywords': 'lord of the rings', 'itemFilter': ['name': 'Condition', 'value': 'New'] 

In het bovenstaande voorbeeld hebben we de staat filter, maar er zijn nog veel meer beschikbaar. Bijvoorbeeld de ExcludeSeller filter is handig om specifieke verkopers van de resultaten uit te sluiten, terwijl de Alleen gratis verzending een om de zoekopdracht alleen te beperken tot items die met gratis verzending worden verkocht. De lijst met filters en hun mogelijke waarden is erg lang: nogmaals, u kunt ze allemaal vinden in de officiële documentatie.

Pagineren van de resultaten

Een andere zeer nuttige parameter die we aan ons verzoek kunnen toevoegen, is paginationInput. Door het te gebruiken, kunnen we een gewenst pagineringsformaat specificeren. Binnen het verzoek, het paginationInput sleutel is gekoppeld aan een woordenboek, dat zelf twee sleutels bevat: ingangenPerPage en paginanummer.

Bij de eerste kunnen we aangeven hoeveel resultaten we "per pagina" willen ontvangen: niet meer dan 100 resultaten per pagina worden ondersteund (dit is ook de standaardwaarde), terwijl het minimum is 1. Met het tweede element, paginanummer, we kunnen specificeren welke pagina we willen ontvangen in de resultaten.

Stel dat we bijvoorbeeld niet meer dan 10 resultaten per pagina wilden en we waren alleen geïnteresseerd in de eerste pagina, dan zou ons verzoek worden:

request = 'keywords': 'lord of the rings', 'itemFilter': ['name': 'condition', 'value': 'new'], 'paginationInput': 'entriesPerPage': 10, ' pageNumber ': 1 


Eigenlijk hadden we kunnen weglaten paginanummer, omdat de standaardwaarde altijd "1" is.

De resultaten sorteren

Een andere zeer nuttige parameter die we aan ons verzoek kunnen toevoegen, is sorteervolgorde. Met deze parameter kunnen we een van de beschikbare sorteercriteria gebruiken om onze resultaten beter te ordenen. Stel dat we onze resultaten bijvoorbeeld in oplopende volgorde op prijs willen sorteren, zodat de goedkoopste items als eerste in de resultaten worden opgenomen:

request = 'keywords': 'lord of the rings', 'itemFilter': ['name': 'condition', 'value': 'new'], 'paginationInput': 'entriesPerPage': 10, ' pageNumber ': 1,' sortOrder ':' PricePlusShippingLowest ' 

In dit geval gebruikten we PricePlusShippingLowest als een sorteervolgorde, dus de items die in de resultaten zijn opgenomen, worden in oplopende volgorde gesorteerd op basis van de som van hun prijs en hun verzendkosten. Net als filters zijn er te veel beschikbare sorteervolgordes om hier te vermelden. We kunnen onder andere gebruiken Afstand Dichtbij of EndTimeSoonest om de resultaten te sorteren op afstand in oplopende volgorde of op de dichtstbijzijnde eindtijd. U kunt alle mogelijke sorteercriteria vinden door deze tabel te raadplegen.

Ons verzoek verzenden en de resultaten krijgen

Nu we klaar zijn met het maken van ons verzoek, moeten we het daadwerkelijk naar Ebay sturen en de resultaten krijgen. Om de eerste taak te volbrengen, gebruiken we de uitvoeren methode op onze api object, met de naam van de oproep die we als het eerste argument willen gebruiken, en het woordenboek dat ons verzoek vertegenwoordigt als het tweede. Dit is hoe ons script er op dit punt in zijn geheel uitziet:



#! / usr / bin / env python3 van ebaysdk.finding import Connection if __name__ == '__main__': api = Connection (config_file = 'ebay.yaml', debug = True, siteid = "EBAY-US") request =  'keywords': 'lord of the rings', 'itemFilter': ['name': 'condition', 'value': 'nieuw'], 'paginationInput': 'entriesPerPage': 10, 'pageNumber': 1, 'sortOrder': 'PricePlusShippingLowest' response = api.execute ('findItemsByKeywords', verzoek) 

Onze resultaten worden geretourneerd en we zullen ernaar verwijzen met de reactie variabele. We willen ze nu ordenen, zodat we voor elk resultaat de titel en prijs in een mooi formaat op het scherm kunnen weergeven, we kunnen een eenvoudige lus toevoegen om dit resultaat te bereiken:

voor item in response.reply.searchResult.item: print (f "Titel: item.title, prijs: item.sellingStatus.currentPrice.value") 

Als we nu proberen het script te starten, krijgen we de volgende resultaten:

 Titel: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Women ManRing Sz12, Prijs: 0,01 Titel: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Sz13, Prijs: 0,01 Titel: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Size9, Price: 0.01 Title: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Sz13, Price: 0.01 Title: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Sz11 , Prijs: 0,01 Titel: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Size7, Price: 0.01 Title: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Sz12, Prijs: 0,01 Titel: Lord of The Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Size9, Price: 0.01 Title: Lord of the Rings The One Ring Lotr Stainless Steel Fashion Men Women Ring Size8, Price: 0.01 Title: Lord of the Rings The One Ring Lotr Stainless Steel Mode Mannen Vrouwen Ring Sz13, Prijs: 0. 01 

Op dit punt kun je je afvragen: hoe kan ik de exacte structuur van de resultaten weten? Het is een goede vraag en u kunt een antwoord krijgen door de xml weergave van de output van een oproepverzoek kunt u in de ebay-documentatie die aan de specifieke oproep is gewijd. Je kunt die over vinden findItemsByKeywords door deze link te volgen.

Conclusies

Terwijl we in het vorige artikel spraken over het opzetten van onze werkomgeving, het verkrijgen van onze API-sleutels en het installeren van de Python SDK, benaderden we in dit tweede deel van onze serie artikelen over Ebay API's de API vinden, en we hebben een eenvoudig verzoek gemaakt met behulp van de findItemsByKeywords bellen. We hebben kort gezien hoe je filters toevoegt en een sorteervolgorde specificeert op ons verzoek en hoe je met de geretourneerde resultaten werkt.
In het volgende artikel gaan we onder meer onze winkel bouwen en zullen we zien hoe we de Handel API om een ​​item te maken en ernaar te uploaden. Tot slot is hier een samenvatting van de officiële documentatie waarnaar we in dit artikel hebben verwezen

  • Lijst met beschikbare oproepen voor de API vinden
  • Documentatie over het findItemsByKeywords bellen
  • Lijst met beschikbare aanvraagfilters
  • Lijst met beschikbare sorteeropdrachten

Inhoudsopgave
  • DEEL 0
    Invoering
  • DEEL I
    Sleutels verkrijgen en toegang krijgen tot de sandbox
  • DEEL II
    De zoek-API
  • DEEL III
    De handels-API
  • DEEL IV
    De merchandising-API



Niemand heeft nog op dit artikel gereageerd.

Een verzameling nuttige informatie over het Linux-besturingssysteem en nieuwe technologieën
Nieuwe artikelen, praktische tips, gedetailleerde recensies en handleidingen. Voel je thuis in de wereld van het Linux-besturingssysteem