¿Sacar datos de una web y agregarlos a una BD?

Estoy intentando hacer un proyecto, en el cual necesito tener ciertos datos en una base de datos.
Tengo este código en la web, por ejemplo:
<tr align="left" height="16" id="100">
<td>17:30</td>
<td>Final</td>
<td>Barcelona</td>
<td>Madrid</td>
<td>1-1</td>
<td>-</td>
</tr>
<tr align="left" height="16" id="101">
<td>19:30</td>
<td>Final</td>
<td>Atletico</td>
<td>Racing</td>
<td>1-0</td>
<td>-</td>
</tr>
...
...
Es decir, todos los partidos, empiezan con el comando <tr .....> y terminan con el </tr>; y dentro de cada partido, cada linea que empieza con <td> significa la hora, equipos, resultado...
¿Cómo puedo sacar esa información de la página y exportarla a un bd sql o access?

4 respuestas

Respuesta
1
Puedes hacerlo, sin complicarte mucho la vida, con visual basic (lo puedes programar con una función en ACCESS) de la siguiente forma:
1) Te guardas la web como un archivo de texto.
2) Lees secuencialmente el archivo hasta que encuentres lo que buscas (te servirá la función Instr). Ves guardando los campos conforme vayas leyendo.
3) Haces el insert en la tabla.
Es laborioso, pero sencillo.
Si, se podría hacer un pequeño programa en VB o C/C++; pero en ese caso, se necesitaría un ordenador encendido que descargase, analizase y subiera los datos al host.
Nuestra intención era si se podría hacer eso directamente desde nuestro host (sin tener que tener un pc encendido todo el día)
O te explicas mal o no te entiendo,
1) Dices que tienes una página web con unos datos
2)Quieres procesar esos datos para meterlos en una BD
Si tienes la web, y tienes la bd ¿cuál es el problema?, ¿Un PC encendido todo el día?
Lo dicho o te explicas mal o yo no entiendo na.
Hay varias webs con datos, pongamos partidos de fútbol.
En la web A están los datos de la liga española, por ejemplo
Barsa 1, Atlético 0
Madrid 2, Murcia 1
..
En la web B están los de la italiana
Inter 1, Milan 1
Juve 2, Roma 0
etc etc etc
Nuestra web, WEB Z, queremos mostrar los datos de las web A, B, C... en la nuestra, por lo que tenemos que coger los datos de web A, B, C.. y añadirlos en nuestra BD para luego tratarlos.
Sabemos que esto lo podemos hacer con un prog en C, pero nuestra intención es hacerlo directamente desde nuestro host en internet.
¿Es posible?
En la forma que propones sólo lo puedes hacer si las otras web te dejan accesar a sus bases de datos (en el caso que las tengan), no creo que de una forma automática se pueda. Al menos yo no conozco la forma.
Respuesta
1
Para hacer ese tipo de transferencia de datos, deberías sacar los datos de otro sistema, me refiero a que si eres tu quien crea ese html, o tu proveedor lo debieras hacer muchísimo mejor con xml y con simpleXML de php lo conviertes en un array y sería sencillísimo en 4 líneas de código.
En caso de que por narices sea de otra web, primero debes leerlo, la mejor manera es con un fread (http://es.php.net/fread) o con la función cURL() para después de leerlo lo tengas metido en una variable de texto con todo.
Después de ello, la mejor opción es usar el explode() de php (http://es.php.net/manual/es/function.explode.php) para poder romper por donde tu quisieras una cadena, en este caso el <tr> primero para sacar cada partido, y con cada partido luego otro explode del <td> para sacar cada dato en concreto.
Entonces, utilizando el fread y el explode, podemos leer una web entera (su código fuente y extraer lo que nos interesa, quitando los banners y demás info que no utilizaremos) y se hace directamente desde nuestro host, sin tener que hacer un programa en vb o c/c++ y la necesidad que conlleva tener un pc encendido todo el día, ¿verdad?
Si, por supuesto, y si tienes la versión 5 de php en el servidor puedes usar el file_get_contents()
Prueba con el código
<?php
$content=file_get_contents("http://www.google.com/");
echo $content;
?>
Respuesta
1
Aver, la informacion esta actualemnete en una pagina web, ¿y quieres tomarla y ponerla en una base de datos? Para evitar la captura supongo.
Esto no tiene que ver con php. Lo puedes hacer con un procesador de textos, vas quitando las etiquetas que no deseas y después lo cargas en excel y listo ahí lo tienes listo para la base de datos que desees.
Aunque si lo copias directamente de la página en el explorador a excel ya estarán en las celdas más fácil
saludos
El proceso tendría que ser automática, ya que se deben recoger los datos cada hora; y puede haber cientos, por lo que manual no puede ser.
Para manual, pues la solución esta claro, Ctrl + C, Ctrl + V; pero hacer esto cada hora y con miles de lineas...
No hay ninguna forma de recorrer el archivo (suponemos que toda esa información de la pag. La guardamos en un txt) ¿Identificar el comienzo de los partidos (tr) y los campos (td) de forma automática y que se pueda hacer desde un servidor web?
¿De dónde vas a sacar la información de los partidos? Te pregunto esto porque a l o mejor es posible que tengan un RSS y la cosa seria más fácil
Hay muchas webs con resultados; por ejemplo esta:
http://www.livescore.com/default.dll
¿Pero entonces quieres "tomar" la información de otra web y mostrarla ... pero si ya esta en esa otra web? ¿Para qué la quieres mostrar? Como te ocmento en los web de donde los quieres tomar busca si hay rss y te puedo ayudar ha hacer un lector de rss.
Respuesta
1
Internet explorer o navegador: Edición> Ver >Código fuente>seleccionar>copiar>pegar en editor de texto y guardar.
Access(SQL puede ser parecido)>Tablas>Importar archivo (tipo archivo=.txt(texto)) ... y se abrirá el asistente
Para crear una tabla nueva.
Para hacer esto automáticamente puedes crearte un programilla que lo haga, pe. En access o VB o similar.
Si necesitas más ayuda me lo pides. Suerte.
El proceso tendría que ser automático.
Pero aun así, de la forma manual; si copio el cod. fuente y lo pego (por ejemplo en access)... ¿cómo distingo los diferentes campos? Ya que ademas, hay más código fuente (banners, anuncios, etc.) que no lo necesito.
La captura de datos tendría que ser periódica.
Me has mostrado un fragmento de código web compuesto
de Barcelona-Madrid y Atlético-Racing el cual te te dado
una pequeña respuesta pero ahora me dices que hay más
código... Simplemente debes seleccionar la parte de código que te
interesa, guardar en formato texto e importar desde access el citado texto.
El asistente de Access/Importar te pide como deseas relacionar
los fragmentos de texto como campos... Tienes que trabajar un poco!
Para hacerlo automático y periódico necesitas saber de programación y hacer
el programa que lo haga
, o buscarte alguien que sea programador y ofrecerle dinero o algo a cambio.
No te puedo ayudar más, ya que yo con esto no gano nada.
Yo si trabajo sin cobrar me arruino y a mi no me ayuda nadie.
Muchas gracias por tu respuesta.
Soy Ing. Tec. en Inf. por lo que la programacion en VB,Delphi,C/C++ y Java no es ningun obstaculo.
Ya te comentaré el resultado final.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas