2011-09-20 41 views
6

Por lo tanto, el sitio web cambia constantemente los datos que muestra, y quiero obtener esos datos cada varios segundos y registrarlos en una hoja de cálculo. El problema es que para acceder a la página, tengo que tener una cookie que obtengo cuando inicio sesión. Desafortunadamente, solo sé cómo programar en MATLAB. MATLAB tiene una función para esto, urlread, pero no se ocupa de las cookies. ¿Qué puedo hacer para llegar a esa página? Puede alguien ayudarme con esto? Apúntame en una dirección donde un novato de programación como yo puede tener éxito, por favor.Obtener datos del sitio web

Respuesta

5

Puede usar wget para descargar contenido y utilizarlas cookies HTTP. Utilizaré StackOverflow.com como objetivo de ejemplo. Estos son los pasos a seguir:

1) Obtenga la herramienta de comando wget. Para Mac o Linux, creo que ya está disponible. En Windows, puede obtenerlo desde GnuWin32 project o desde uno de los muchos otros puertos (Cygwin, MinGW/MSYS, etc.).

2) A continuación tenemos que obtener una cookie autenticada iniciando sesión en el sitio web en cuestión. Puede usar su navegador preferido para esto.

En Internet Explorer, puede producirlo usando "Menú Archivo> Importar y exportar> Exportar cookies". En Firefox, utilicé la extensión Cookie Exporter para exportar cookies al archivo de texto. Para Chrome, debe haber similar extensions

Obviamente, solo necesita hacer este paso una vez, ¡siempre y cuando las cookies no hayan expirado!

3) Una vez que encuentre el archivo de cookie exportado, podemos usar wget para buscar la página web y provide it con esta cookie. Por supuesto, esto se puede realizar desde el interior de MATLAB usando la función SYSTEM:

%# fetch page and save it to disk 
url = 'http://stackoverflow.com/'; 
cmd = ['wget --cookies=on --load-cookies=./cookies.txt ' url]; 
system(cmd, '-echo'); 

%# process page: I am simply viewing it using embedded browser 
web(['file:///' strrep(fullfile(pwd,'index.html'),'\','/')]) 

de análisis de la página web es un tema totalmente distinto que no voy a entrar. Una vez que obtenga los datos que busca, puede interactuar con hojas de cálculo de Excel utilizando las funciones XLSREAD y XLSWRITE.

4) Finalmente, puede escribir esto en una función, y hacer que se ejecutan en regular intervals usando la función TIMER

1

Trate de usar el java.net. * Clases.

Usted debe ser capaz de utilizarlas directamente en el espacio de trabajo de MATLAB, tal como se describe aquí: http://www.mathworks.co.uk/help/techdoc/matlab_external/f4863.html

+3

+1 o Apache Commons HTTPClient, que puede ser más conveniente para trabajar con cookies. Una versión anterior se redistribuye con Matlab, y puede obtener versiones más recientes con 'javaclasspath' con la suficiente facilidad. Hemos utilizado este enfoque en Matlab para el acceso web que necesita sesiones o certificados. –

0

Matlab se ha incorporado en funciones para la descarga web. Para los sitios http, hay webread.m y websave.m. Para los FTP, hay mget.m

Cuestiones relacionadas