elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Extraer contenido de pagina web a Formulario C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Extraer contenido de pagina web a Formulario C#  (Leído 4,544 veces)
_vicho_

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Extraer contenido de pagina web a Formulario C#
« en: 30 Octubre 2019, 15:44 pm »

Hola en mi formulario estoy extrayendo el valor del dolar desde una pagina web, e probado con 2 paginas diferentes y si lo logre, pero en la que se me pidió sacar el valor no se deja ya que usa un Script para actualizar a cada minuto y no se encuentra directamente en la pagina les comparto mi código:


public void Satdolar()
        {
            WebRequest request = WebRequest.Create("https://www.eldolar.info/en/mexico/dia/hoy");
            // If required by the server, set the credentials.  
            request.Credentials = CredentialCache.DefaultCredentials;

            // Get the response.  
            WebResponse response = request.GetResponse();
            // Display the status.  
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);

            // Get the stream containing content returned by the server.
            // The using block ensures the stream is automatically closed.
            using (Stream dataStream = response.GetResponseStream())
            {
                // Open the stream using a StreamReader for easy access.  
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.  
                string responseFromServer = reader.ReadToEnd();
                // Display the content.  
                string compra,  Stncompra;
                compra = responseFromServer.Substring(responseFromServer.IndexOf("pagos</span></a></td><td><div></div></td><td><div></div></td><td colspan=2 class=xTimes>") + 88);
                Stncompra = compra.Substring(0, 6);
                radioButton2.Text = Stncompra;

            }

            // Close the response.  
            response.Close();
        }
        public void XEdolar()
        {
            WebRequest request = WebRequest.Create("https://www.xe.com/es/");
            // If required by the server, set the credentials.  
            request.Credentials = CredentialCache.DefaultCredentials;

            // Get the response.  
            WebResponse response = request.GetResponse();
            // Display the status.  
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);

            // Get the stream containing content returned by the server.
            // The using block ensures the stream is automatically closed.
            using (Stream dataStream = response.GetResponseStream())
            {
                // Open the stream using a StreamReader for easy access.  
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.  
                string responseFromServer = reader.ReadToEnd();
                // Display the content.  
                string compra, Stncompra;
                compra = responseFromServer.Substring(responseFromServer.IndexOf("from=\"MXN\" to=\"USD\">") + 20);
                Stncompra = compra;//.Substring(0, 5000);
                txtDollar.Text = Stncompra;

            }

            // Close the response.  
            response.Close();
        }


el Satdolar si me extrae el fragmento que ocupo de la pagina web el XEdolar me devuelve la pagina web desde el inicio porque no encuentra el index que le establecí.


Existe una manera de extraer el valor después de a verse ejecutado el script?

la pagina que ocupo el valor del dolar es esta https://www.xe.com/es/


gracias por sus respuestas buen día.




P.D. viendo el codigo en chrome con F12 (de ahi saque el index que tengo) me manda este mensaje:

{"warning":"<!-- WARNING: Automated extraction of rates is prohibited under the Terms of Use. -->\n","payload":{"isTradeable":false},"resourceStrings":{"com.xe.components.pages.home.trc.startsaving":"Empiece a ahorrar en sus transferencias","com.xe.components.pages.home.trc.quickeasysecure":"Transferencias internacionales de dinero r\u00e1pidas, f\u00e1ciles y seguras","com.xe.components.pages.home.trc.ctabutton":"M\u00e1s informaci\u00f3n acerca de XE Money Transfer","com.xe.components.pages.home.trc.title":"Conversor de divisas XE","com.xe.components.pages.home.trc.subtitle":"Tasas de transferencia","com.xe.components.pages.home.tab.midmarket.title":"Tipos de mercado en tiempo real","com.xe.components.pages.home.tab.midmarket.body":"Vea tipos de cambio precisos y fiables de <a href=\"/faq/rates_buyorsellrates.php\">mid-market</a> en tiempo real de los mercados mundiales de divisas, generados a partir de m\u00e1s de 100\u00a0fuentes internacionales.","com.xe.components.pages.home.tab.tradeable.title":"Tasas de transferencia en tiempo real","com.xe.components.pages.home.tab.tradeable.body":"Get a quote for an international money transfer from <a href=\"/xemoneytransfer/uk\">XE Money Transfer</a>"}}



« Última modificación: 30 Octubre 2019, 15:53 pm por _vicho_ » En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Extraer contenido de pagina web a Formulario C#
« Respuesta #1 en: 5 Noviembre 2019, 16:24 pm »

Segun veo la web tiene una proteccion anti-scraping, esto es dado que tienen API de pago y por consiguiente es de esperar que no te vayan a dejar simplemente tomar el contenido asi tan facil. El metodo que utilizan es que la web hace una peticion a su API en https://www.xe.com/es/api/rates_table.php y el server responde con un payload "rates" cifrado, me imagino que sea una especie de json con los datos de todas las conversiones que luego algun codigo js en la pc cliente se encargara de descifrar y de esta forma actualiza la web. Lo ideal en este caso seria poder interceptar la funcion decifradora e implementarla en tu propia aplicacion para luego hacer simples peticiones a su API sin necesidad de hacer parse o scraping a la web, pero esto necesita ciertas habilidades que, desde el respeto, no creo que poseas, por consiguiente, te aconsejaria ir por una ruta mucho mas sencilla y es usando Selenium y/o algun motor de navegador web+js como:

SimpleBrowser(https://github.com/SimpleBrowserDotNet/SimpleBrowser)
CefSharp(https://github.com/cefsharp/CefSharp)
Optimus (https://github.com/RusKnyaz/Optimus)
Puppeteer Sharp(https://github.com/kblok/puppeteer-sharp)
PhantomJS (descontinuado).
Aqui tienes una lista entera (https://github.com/dhamaniasad/HeadlessBrowsers)

Aqui puedes tener una idea de como implementar Selenium con PhantomJS para hacer scraping
https://stackoverflow.com/questions/24288726/scraping-webpage-generated-by-javascript-with-c-sharp/24289395#24289395

Suerte


En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
_vicho_

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Extraer contenido de pagina web a Formulario C#
« Respuesta #2 en: 5 Noviembre 2019, 18:17 pm »

y efectivamente ThunderCls, si me tope un Json mientras iba leyendo cada parte de la web con el devtools de google.

Gracias por explicarme como esta integrada esa web y los temas que ocupo para resolver mi problema.

 ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ideas] Extraer contenido web
Programación Visual Basic
STARZ 7 3,887 Último mensaje 4 Octubre 2011, 14:29 pm
por Psyke1
Extraer contenido de una tabla de otra web « 1 2 »
PHP
javirk 13 8,871 Último mensaje 5 Mayo 2012, 17:06 pm
por javirk
Extraer Contenido de Txt BAT
Scripting
Blender123 3 4,469 Último mensaje 5 Septiembre 2014, 19:20 pm
por Eleкtro
Extraer un dato de un formulario de una página web con VB.NET
.NET (C#, VB.NET, ASP)
Crazy.sx 1 2,429 Último mensaje 23 Octubre 2014, 00:14 am
por Eleкtro
Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos??
Programación Visual Basic
valeeen 2 3,929 Último mensaje 14 Julio 2015, 18:06 pm
por valeeen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines