Forum > Spanish

Traer datos de un sitio web, con o sin uso de API

(1/3) > >>

daragor:
Hola muchachos, he buscado info pero me quede corto, no encuentro al menos con mis limitaciones del ingles. no logro dar con las palabras claves y quizas me puedan ayudar, de paso vamos ampliando este foro en español..

Me gustaria agregar a un sistema que tengo, la opcion de consultar un precio de un producto en algun sitioweb de referencia y mostrar el resultado.. sin tener que entrar a dicho sitio, nada de browser al menos visible.. Entiendo que para estas cosas existen las API de los sitios web que nos dan acceso a los sistemas, pero no conozco nada desde el lado de lazarus, componentes, codigos, etc. podrian guiarme un poco? lo ideal para mi seria consultar de forma trasparente y solo mostrar el/los precio/s sugerido/s (de la web consultada, mercadolibre, ebay lo que sea) de dicho producto.

muchas gracias!

Edson:

--- Quote from: daragor on April 19, 2017, 03:19:29 pm ---... de consultar un precio de un producto en algun sitioweb de referencia y mostrar el resultado.. sin tener que entrar a dicho sitio, nada de browser al menos visible..

--- End quote ---

Pues para leer el precio, vas a tener que entrar al sitio, es decir realizar un acceso al servidor. Mis preguntas serían:
En los sitios que piensas consultar ¿tienen una URL fija y una posición fija, los elementos que contienen los precios que vas a consultar, o son cambiantes/aleatorias?

Si piensas usar MercadoLibre, debo decir que esas páginas cambian constantemente, y si quieres consultar allí, tendrías que implementar un robot de búsqueda con cierto nivel de inteligencia para ubicar los precios. Hay muchos parámetros que programar allí.

Lo ideal, sería que consultes a un sitio que maneje Web Services, y así se puede realizar la consulta de manera más sencilla.

Saludos.

lainz:
Hola, mira yo aprendí a hacerlo con JavaScript con AngujarJS 1.x

Pero es lo mismo en lazarus, pero nunca lo hice en lazarus, tenes que entrar acá para mercado libre:
http://dev-test.mercadolibre.com/apps/rest-console/#response

Por ejemplo para argentina, tenes que tener un token que es tuyo como desarrollador tenes que tener cuenta en mercado libre. Lo mismo para cualquier API como la de youtube o cualquier api de google también tenes que estar registrado.

https://api.mercadolibre.com/sites/MLA/search?q=ipod (Si entras ahi directo vas a ver HTML, no es lo que buscas vos)

Haces GET con tu token y te devuelve JSON puro, sin HTML

--- Quote ---{"site_id":"MLA","query":"ipod","paging":{"total":7837,"offset":0,"limit":50},"results":[{"id":"MLA614098984","site_id":"MLA","title":"Ipod Touch 16 Gb 6ta Generación - Gold","subtitle":null,"seller":{"id":195832229,"power_seller_status":"platinum","car_dealer":false,"real_estate_agency":false,"tags":[]},"price":6399,"currency_id":"ARS","available_quantity":2,"sold_quantity":67,"buying_mode":"buy_it_now","listing_type_id":"gold_special","stop_time":"2035-11-19T07:00:00.000Z","condition":"new","permalink":"http://articulo.mercadolibre.com.ar/MLA-614098984-ipod-touch-16-gb-6ta-generacion-gold-_JM","thumbnail":"http://mla-s1-p.mlstatic.com/463211-MLA20522750405_122015-I.jpg","accepts_mercadopago":true,"installments":null,"address":{"state_id":"AR-C","state_name":"Capital Federal","city_id":"TUxBQlJFQzkyMTVa","city_name":"Recoleta"},"shipping":{"free_shipping":true,"mode":"me2"},"seller_address":{"id":171876304,"comment":"","address_line":"","zip_code":"","country":{"id":"AR","name":"Argentina"},"state":{"id":"AR-C","name":"Capital Federal"},"city":{"id":"TUxBQlJFQzkyMTVa","name":"Recoleta"},"latitude":-34.5947723,"longitude":-58.3959783},"attributes":[],"original_price":null,"category_id":"MLA43718","official_store_id":477,"reviews":{}}, ...
--- End quote ---

El JSON lo lees en lazarus con el lector de JSON que mas te guste, hay varios pero hay uno que viene con lazarus / fpc.

EDIT! Me equivoque en algo, hay parte de la API que es publica, asi que podes acceder así nomas sin el token si no son datos privados.

Lo podes probar acá
https://resttesttest.com/

En donde dice Method dejas GET y en endpoint pones https://api.mercadolibre.com/sites/MLA/search?q=ipod, despues haces Ajax request y listo te devuelve el json, eso nomas para que veas, lo mismo tenes que hacer en lazarus

Ñuño_Martínez:
Usa los componentes JEDI o Synapse.  Mis favoritos son estos últimos, aunque por desgracia el proyecto parece estar bastante muerto, porque hace años que no actualizan ni dan señales de vida. :( ¡De hecho todavía tienen un encuesta activa acerca de Kylix!

En cualquier caso, con cualquiera de los dos puedes descargarte el documento HTML y luego usar algún parser de XML para buscar los datos que necesites.  Si el documento HTML está bien formateado (sigue a rajatabla HTML 4.1, XHTML 1.0 ó HTML 5) no deberías tener muchos problemas.  Si por el contrario no sigue correctamente esos formatos (algo que por desgracia hacen casi todas las webs que he visto) tendrás que trabajártelo mucho.

daragor:
Muchachos! es impresionante la ayuda que me dan, ahora voy a hacerme un tiempo para ir probando y analizando una a una sus propuestas y claro que voy a pasar a contar la experiencia con los componentes mencionados y con alguna web específica que vaya a probar... la verdad no soy experto en desarrollo web pero algo de idea tengo como para sumergirme...  :-[

Navigation

[0] Message Index

[#] Next page

Go to full version