Introducción a la API de eBay con Python the Finding API - Parte 2

Introducción a la API de eBay con Python the Finding API - Parte 2

En el artículo anterior, vimos cómo realizar los pasos preliminares para preparar nuestro entorno de trabajo, crear un desarrollador de eBay y una cuenta de Sandbox y generar las claves y credenciales necesarias para ejecutar llamadas API. En este nuevo capítulo crearemos nuestra primera solicitud y realizaremos nuestra primera llamada centrada en la "API de búsqueda"

En este tutorial aprenderás:

  • ¿Cuáles son las posibles llamadas de "API de búsqueda"?
  • ¿Cuáles son los parámetros que puede usar para personalizarlo?
  • Cómo construir una solicitud con el Python SDK;
  • Cómo realizar una llamada API;
Introducción a la API de eBay con Python: The Finding API - Parte 2

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Sistema operativo agnóstico.
Software git y python3
Otro Conocimiento del lenguaje de programación de Python y de los conceptos básicos orientados a objetos.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

El Hallazgo API



El Hallazgo API es la primera que exploramos en esta serie de artículos sobre interactuar programáticamente con eBay mediante el uso de Python y el eBay Python SDK. Esta API proporciona llamadas que pueden ser muy útiles tanto para compradores como para vendedores y nos proporcionan acceso a las capacidades de búsqueda de la plataforma de eBay, proporcionando una forma más rápida de recuperar y manipular datos en comparación con las técnicas de raspado web.

Las llamadas de la API de búsqueda

Las siguientes son, en mi opinión, las llamadas más relevantes proporcionadas por el Hallazgo API:

  • FindItemSAdVanced: realicemos consultas complejas y apliquemos filtros;
  • FindItemsByCategory: encontremos artículos que pertenecen a una categoría específica;
  • finditemsbykeywords: con esta llamada podemos encontrar elementos basados ​​en palabras clave;
  • FindItemsbyProduct: con esta llamada podemos encontrar elementos basados ​​en identificadores como ISBN, EAN, UPC y EPID;

Puede encontrar la lista completa de llamadas disponibles para el Encontrar API En la página dedicada.
En este tutorial, sin embargo, nos centraremos en el finditemsbykeywords llamar.



Antes de que comencemos

En el artículo anterior de esta serie, configuramos nuestro entorno de trabajo, por lo tanto, a partir de ahora asumiré que ha instalado correctamente el SDK de eBay Python y ha creado las teclas API. Dado que estamos trabajando con el Hallazgo API, podemos trabajar directamente en el sitio de producción.

Comencemos, entonces. Como lo primero, creamos un directorio como la base de nuestro proyecto; (sorprendentemente) lo llamaremos "eBay":

$ mkdir ebay

Dentro de este directorio, necesitamos almacenar nuestras credenciales en el eBay.yaml Archivo, como discutimos en el artículo anterior. Puede encontrar una plantilla de este archivo dentro de la raíz del repositorio de GitHub que clonamos. Aquí está el contenido de mi eBay.yaml Archivo, en el que ya he ingresado mis credenciales:

Contenido del archivo de configuración de la API de eBay, como puede observar, todo lo que necesitamos proporcionar en la sección dedicada a la Encontrar API, es el ID de aplicación para nuestro entorno de producción.

Nuestra primera llamada de API

Por defecto, eBay acepta la solicitud de API y proporciona en forma de xml Estructuras: Lo que nos hace posible interactuar con esos elementos de manera orientada a objetos es el Python SDK. Ahora que tenemos nuestras credenciales en su lugar, podemos comenzar a crear nuestra primera solicitud de API. Crear un archivo nuevo y llamarlo findbykeywords.py, Dentro de esto, lo primero que debemos hacer es importar los módulos necesarios:

#!/usr/bin/env python3 de eBaysdk.Encontrar la conexión de importación 
Copiar

Lo siguiente que debe hacer es inicializar una instancia del Conexión clase, así es como lo hacemos:

api = conexión (config_file = 'ebay.Yaml ', SiteId = "eBay-US")

Pasamos algunos parámetros al constructor del Conexión clase: archivo de configuración, y Identificación del sitio. El primero es necesario para especificar la ruta al archivo que contiene nuestras credenciales: ya que, por defecto, su valor es el mismo del que proporcionamos, podríamos haber omitido. Los segundos argumentos que se necesita para especificar el sitio del país de eBay, se debe señalar la solicitud: "EBay-us" es el valor predeterminado. Si quisiera realizar mi búsqueda en el sitio italiano, por ejemplo, habría usado "EBay-it" en cambio. Se pueden pasar muchos otros parámetros para ajustar la configuración predeterminada, pero para saber que nuestra configuración es suficiente. Avanzemos más.

Inicializamos nuestra instancia del Conexión clase, ahora necesitamos crear una solicitud, que se incluirá en la llamada API. Gracias a Python SDK, podemos representar una solicitud con un diccionario, especificando sus parámetros con pares de valor clave:

request = 'Palabras clave': 'Señor de los anillos', 
Copiar

Lo anterior es la solicitud mínima posible para el finditemsbykeywords Llame: Acabamos de especificar las palabras clave para buscar. Esto es posible porque 'Palabras clave' ¿Es el único parámetro requerido para esta llamada?.

Dependiendo de la llamada que deseamos realizar, podemos usar muchos otros parámetros para refinar nuestra solicitud. Para saber exactamente todos los parámetros de solicitud disponibles para una llamada específica, puede consultar la documentación de eBay bastante detallada para ello.



Restringir nuestra búsqueda con un filtro

Podemos especificar una lista de filtros dentro de nuestra solicitud, para que se reduzca el número de resultados devueltos. Dentro de la solicitud, el itemfilter La clave se asocia con una matriz que contiene todos los filtros, cada uno de ellos en forma de un diccionario, donde el nombre La tecla se asocia con una cadena que representa el nombre del filtro y el valor uno está asociado con el valor real que debe usarse para el filtro. Veamos un ejemplo. Digamos que queremos agregar filtro a nuestra solicitud, para restringir nuestra búsqueda solo a los elementos "nuevos":

request = 'Palabras clave': 'Señor de los anillos', 'itemFilter': ['nombre': 'condición', 'valor': 'nuevo'] 
Copiar

En el ejemplo anterior usamos el condición filtrar, pero muchos otros están disponibles. Por ejemplo, el Excluido El filtro es útil para excluir vendedores específicos de los resultados, mientras que el Sólo envío gratis uno para restringir la búsqueda solo a los artículos vendidos con envío gratis. La lista de filtros y sus posibles valores es realmente larga: nuevamente, puede encontrarlos a todos consultando la documentación oficial.

Pagando los resultados

Otro parámetro muy útil que podemos agregar a nuestra solicitud es PaginationInput. Al usarlo podemos especificar un formato de paginación deseado. Dentro de la solicitud, el PaginationInput La clave está asociada con un diccionario, que contiene dos claves: entrada y número de página.

Con el primero podemos especificar cuántos resultados queremos recibir "por página": no más que 100 Se admiten los resultados por página (este también es el valor predeterminado), mientras que el mínimo es 1. Con el segundo elemento, número de página, Podemos especificar qué página queremos recibir en los resultados.

Digamos, por ejemplo, que no queríamos más de 10 resultados por página y solo estábamos interesados ​​en la primera página, nuestra solicitud se convertiría en:

request = 'Palabras clave': 'Señor de los anillos', 'itemFilter': ['name': 'condición', 'valor': 'nuevo'], 'paginationInput': 'EntriesPerPage': 10, ' PageNumber ': 1 
Copiar

En realidad podríamos haber omitido número de página, Dado que su valor predeterminado es siempre "1".

Clasificando los resultados

Otro parámetro muy útil que podemos agregar a nuestra solicitud, es Orden de clasificación. Con este parámetro podemos usar uno de los criterios de clasificación disponibles para organizar mejor nuestros resultados. Digamos, por ejemplo, queríamos ordenar nuestros resultados por precio en orden ascendente, para que primero se incluyan los artículos más baratos en los resultados:

request = 'Palabras clave': 'Señor de los anillos', 'itemFilter': ['name': 'condición', 'valor': 'nuevo'], 'paginationInput': 'EntriesPerPage': 10, ' PageNumber ': 1,' SortOrder ':' PrickPlusShippingLowest ' 
Copiar

En este caso usamos PricdeplusshippingLowest Como orden de clasificación, por lo que los artículos incluidos en los resultados, se clasificarán en orden ascendente por resultado de la suma de su precio y su tarifa de envío. Al igual que los filtros, las órdenes de clasificación disponibles son demasiadas para informarse aquí. Entre los demás podemos usar Distancineearest o EndTimesOnest para ordenar los resultados por distancia en orden ascendente, o por el tiempo final más cercano respectivamente. Puede encontrar todos los criterios de clasificación posibles consultando esta tabla.

Enviar nuestra solicitud y obtener los resultados

Ahora que hemos terminado de crear nuestra solicitud, debemos enviarla a eBay y obtener los resultados. Para lograr la primera tarea, usamos el ejecutar método en nuestro API objeto, especificando el nombre de la llamada que queremos usar como primer argumento, y el diccionario que representa nuestra solicitud como la segunda. Esto es lo que parece nuestro guión en su totalidad en este punto:



#!/usr/bin/env python3 de eBaysdk.Encontrar conexión de importación si __name__ == '__main__': api = Connection (config_file = 'ebay.yaml ', debug = true, siteId = "eBay-us") request = ' Palabras clave ':' Señor de los anillos ',' itemFilter ': [' nombre ':' condición ',' valor ':' nuevo '' ], 'PaginationInput': 'EntriesPerPage': 10, 'PageNumber': 1, 'SortOrder': 'PrickPlusShippingLowest' Respuesta = API.ejecutar ('finditemsbykeywords', solicitud) 
Copiar

Nuestros resultados serán devueltos, y lo haremos referencia con el respuesta variable. Ahora queremos organizarlos, de modo que para cada resultado podamos tener el título y el precio que se muestran en la pantalla en un formato agradable, podemos agregar un bucle simple para lograr este resultado:

para el ítem en respuesta.responder.resultado de búsqueda.Elemento: print (f "Título: Artículo.Título, precio: artículo.venderstatus.precio actual.valor") 
Copiar

Si ahora intentamos iniciar el script, obtenemos los siguientes resultados:



Título: Lord of the Rings The One Ring Lotr de acero inoxidable Mujeres Manring SZ12, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Mujeres SZ13, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Mujeres Tamaño de anillo9, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Mujeres SZ13, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr Acero inoxidable Moda Mujeres Mujeres Sz11, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Size7, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr Acero inoxidable Moda Mujeres Mujeres SZ12, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Mujeres Tamaño de anillo9, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Tamaño de anillo 8, Precio: 0.01 Título: Lord of the Rings The One Ring Lotr de acero inoxidable Moda Mujeres Mujeres SZ13, Precio: 0.01 

En este punto, puede preguntar: ¿cómo puedo saber la estructura exacta de los resultados?? Es una buena pregunta, y puedes tener una respuesta revisando el xml Representación de la salida de una solicitud de llamada que puede en la documentación de eBay dedicada a la llamada específica. Puedes encontrar el de finditemsbykeywords Siguiendo este enlace.

Conclusiones

Mientras que en el artículo anterior hablamos sobre cómo configurar nuestro entorno de trabajo, obtener nuestras claves API e instalar el SDK de Python, en esta segunda parte de nuestra serie de artículos sobre las API de eBay nos acercamos a los Encontrar API, y creamos una solicitud simple usando el finditemsbykeywords llamar. Vimos brevemente cómo agregar filtros y especificar una orden de clasificación a nuestra solicitud y cómo trabajar con los resultados devueltos.

En el próximo artículo, entre las otras cosas, construiremos nuestra tienda y veremos cómo usar el Comercio API para crear y cargarle un elemento. En conclusión aquí hay un resumen de la documentación oficial a la que hacemos referencia en este artículo:

  • Documentación sobre el finditemsbykeywords llamar
  • Lista de filtros de solicitud disponibles
  • Lista de pedidos de clasificación disponibles
  • Lista de llamadas disponibles para el Encontrar API

Tabla de contenidos

  • Parte 0

    Introducción

  • Parte I

    Obtener llaves y acceder al sandbox

  • PARTE II

    La api de hallazgo

  • Parte III

    La API comercial

  • Parte IV

    La API de comercialización

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Cómo crear un paquete Flatpak
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo configurar un servidor OpenVPN en Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo trabajar con la API REST de WooCommerce con Python
  • Tutorial de depuración de GDB para principiantes
  • Cómo usar ADB Android Debug Bridge para administrar su Android ..