Script interactivo para buscar productos tasados en Todoconsolas (https://www.todoconsolas.com/es/vende). Devuelve los precios de compra.
Requisitos: python >=3.6, requests
Script interactivo para buscar productos tasados en Todoconsolas (https://www.todoconsolas.com/es/vende). Devuelve los precios de compra.
Requisitos: python >=3.6, requests
from typing import Dict | |
import requests | |
ProductosTasados = Dict[str, str] # { nombre : precio } | |
def tasar(busqueda: str) -> ProductosTasados: | |
headers = { | |
"Host": "www.todoconsolas.com", | |
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0", | |
"Accept": "application/json, text/javascript, */*; q=0.01", | |
"Accept-Language": "es,en-US;q=0.7,en;q=0.3", | |
"Accept-Encoding": "gzip, deflate, br", | |
"Referer": "https://www.todoconsolas.com/es/vende", | |
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", | |
"X-Requested-With": "XMLHttpRequest", | |
"Origin": "https://www.todoconsolas.com", | |
"DNT": "1", | |
"Connection": "keep-alive" | |
} | |
payload = { | |
"s": "+".join(busqueda.split(" ")), | |
"ready_to_buy": 1, | |
"resultsPerPage": 10 | |
} | |
r = requests.post("https://www.todoconsolas.com/es/busqueda", headers=headers, data=payload) | |
r.raise_for_status() | |
r = r.json() | |
products_raw = r.get("products", []) | |
products_parsed = dict() | |
for product in products_raw: | |
nombre = product["name"] | |
precio = product["buy_price"] | |
products_parsed[nombre] = precio | |
return products_parsed | |
def print_productos(productos: ProductosTasados): | |
if not productos: | |
print("No se encontraron productos!") | |
return | |
print(f"{len(productos)} productos encontrados:") | |
for nombre, precio in productos.items(): | |
print(f"\t{nombre} - {precio}") | |
def main(): | |
while True: | |
try: | |
buscar = input("Producto a buscar (q=salir): ").strip() | |
if buscar.lower() == "q": | |
raise KeyboardInterrupt | |
productos = tasar(buscar) | |
print_productos(productos) | |
except KeyboardInterrupt: | |
break | |
print("Bye!") | |
if __name__ == "__main__": | |
main() |