Comprobación de la disponibilidad de productos de Amazon mediante Python

| | | | | |

Como sabemos, Python es un lenguaje multipropósito ampliamente utilizado para secuencias de comandos. Su uso no se limita solo a la resolución de cálculos complejos, sino también a la automatización de tareas cotidianas. Digamos que queremos rastrear la disponibilidad de cualquier producto de Amazon y cerrar un trato cuando cambie la disponibilidad del producto, así como informar al usuario de la disponibilidad por correo electrónico. Será muy divertido escribir un script de Python para esto. Nota. Instale las bibliotecas requeridas (según el código) antes de ejecutar el script. También tenga en cuenta que si el producto no está disponible actualmente, no se enviará ningún correo electrónico al usuario. El Asin Id debe ser proporcionado por el usuario para el producto que desea rastrear.

Funcionamiento de cada módulo utilizado:
  • -> solicitudes: se utiliza para obtener y publicar HTTP solicitudes
  • -> tiempo: se usa para encontrar la hora actual, esperar, dormir
  • -> programar: se usa para programar una función para que se ejecute nuevamente después de intervalos. Es similar a la funcionalidad "setInterval‚" en JavaScript.
  • -> smptlib: se usa para enviar correo electrónico usando Python.

# Secuencia de comandos de Python para el verificador de disponibilidad de productos de Amazon # Importación de bibliotecas desde lxml Importación de solicitudes de importación de html desde el tiempo Importación del sueño Importación del tiempo Importación del cronograma Importación de smtplib # ID de correo electrónico para quienes desean verificar la disponibilidad receiver_email_id = "EMAIL_ID_OF_USER" def check(url): headers = {` User-Agent`: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/42.0.2311.90 Safari/537.36`} # agregando encabezados para mostrar que usted es # un navegador que envía una solicitud GET page = request.get(url, headers = headers) for i in range(20): # porque las verificaciones continuas en # milisegundos o pocos segundos # bloquean su solicitud sleep(3) # analizando el contenido html doc = html.fromstring(page .content) # comprobando la disponibilidad XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) DISPONIBILIDAD ITY = ``.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY else None return DISPONIBILIDAD def sendemail(ans, product): GMAIL_USERNAME = "SU_GMAIL_ID" GMAIL_PASSWORD = "SU_GMAIL_PASSWORD" destinatario = receiver_email_id body_of_email = ans email_subject = producto + ` disponibilidad del producto ` # crea una sesión SMTP s = smtplib.SMTP(`smtp.gmail.com`, 587) # inicia TLS para seguridad s.starttls() # Autenticación s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # mensaje a enviar headers = " " .join(["from: " + GMAIL_USERNAME, "asunto: " + email_subject, "to: " + destinatario, "mime-version: 1.0", "content-type: text/html"]) content = headers + " " + body_of_email s.sendmail(GMAIL_USERNAME, destinatario, contenido) s.quit() def ReadAsin(): # Asin Id es el Id del producto que # debe proporcionar el usuario Asin = `B077PWK5BT` url = "http:// www.amazon.in/dp/" + Asin print ("Procesando: "+url) ans = check(url) arr = [ `Solo queda 1 en stock`, `Solo 2 en stock`, `En stock .`] print(respuesta) si respuesta en arr: # s finalizando el correo electrónico al usuario si # en caso de que el producto esté disponible sendemail(ans, Asin) # programando el mismo código para que se ejecute varias # veces después de cada 1 minuto def job(): print("Tracking....") ReadAsin() schedule.every (1).minutos.do(trabajo) while True: # ejecutando todas las tareas/trabajos pendientes schedule.run_pending() time.sleep(1) 

Salida:

Seguimiento.. .. Procesando: http://www.amazon.in/dp/B077PWK5BT Solo queda 1 en stock. Seguimiento.... Procesando: http://www.amazon.in/dp/B077PWK5BT Solo queda 1 en stock. Seguimiento.... Procesando: http://www.amazon.in/dp/B077PWK5BT Solo queda 1 en stock. 

¿Cómo crear un verificador de disponibilidad de existencias con solicitudes de Python si se usa JavaScript?

Pregunta de StackOverflow

Escribí un código que debería verificar si un producto vuelve a estar disponible y, cuando lo esté, enviarme un correo electrónico para notificarme. Esto funciona cuando las cosas que busco están en el html.

Sin embargo, a veces ciertos objetos se cargan a través de JavaScript. ¿Cómo podría editar mi código para que el web scraping también funcione con JavaScript?

Este es mi código hasta ahora:

< código class="hljs language-python">importar tiempo importar solicitudes while Verdadero: # Obtenga la URL de la página de IKEA url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # Obtén el texto de esa página y escribe todo en minúsculas productpage = request.get(url).text.lower() # Establece las cadenas que deben estar en la página si el producto no está disponible outofstockstrings = [`niet beschikbaar voor levering`, `alleen beschikbaar in de winkel `] # Comprobar si las cadenas están en el texto de la página web si any(x en página de producto para x en outofstockstrings): time.sleep(1800) continuar otro: # envíeme un correo electrónico y rompa el bucle 

Respuesta:

En lugar de raspar y analizar el HTML, podría usar el stock no oficial API que también utiliza el sitio web de IKEA. Esa API devuelve datos JSON que son mucho más fáciles de analizar y también obtendrá estimaciones cuando el producto vuelva a estar disponible.

Incluso hay un proyecto escrito en javascript/node que le proporciona este tipo de información directamente desde la línea de comando: https://github.com/Ephigenia/ikea-availability-checker< /a>

Puede comprobar fácilmente el stock de la silla en todas las tiendas de los Países Bajos:

npx ikea-availability-checker stock --country nl 20336841 

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method