Foros del Web » Programando para Internet » Ruby »

Consulta convertir web (PHP A RUBY ON RAILS)

Estas en el tema de Consulta convertir web (PHP A RUBY ON RAILS) en el foro de Ruby en Foros del Web. Buenas , una consulta estamos pasando una pagina de php a ruby on rails se trata sobre una comunidad financiera , que muestra los datos ...
  #1 (permalink)  
Antiguo 12/03/2013, 11:08
 
Fecha de Ingreso: marzo-2013
Ubicación: lima , peru
Mensajes: 1
Antigüedad: 11 años, 1 mes
Puntos: 0
Consulta convertir web (PHP A RUBY ON RAILS)

Buenas , una consulta estamos pasando una pagina de php a ruby on rails se trata sobre una comunidad financiera , que muestra los datos de diferentes empresas y para ello extrae datos de otras paginas web , por ejemplo la empresa ALICOR , algunos de sus datos se encuentran aqui :

http://www.bvl.com.pe/jsp/cotizacion.jsp?fec_inicio=20130120&fec_fin=2013020 1&nemonico=ALICORC1

El objetivo del sitio es básicamente extraer datos de otra pagina web mediante esas funciones en php , guardarlas en la base de datos y mostrarlas en la pagina web del proyecto .Ademas , tambien puede mostrar defrente en la web.

Algunas funciones de php que emplean son (file_get_contents,explode, preg_match_all) , basicamente mi problema esta en la forma que esta hecho el algoritmo para extraer datos ya que lo hizo otra persona.

Aqui hay un fragmento de la web :

$bloomberg = file_get_contents("http://www.bloomberg.com/quote/$busqueda"); // Cambiar URI a http://www.bloomberg.com/quote/
$obtenerBloomberg = explode('<span class=" price">', $bloomberg);
$obtenerBloomberg = explode('<span> ',$obtenerBloomberg[1]);
$precio = trim(strip_tags($obtenerBloomberg[0]));
$moneda = explode('</span>', $obtenerBloomberg[1]);
$moneda = trim(strip_tags($moneda[0]));


if($moneda == ""){
$moneda = "-";
}

$variacion = explode('<span class=" trending_', $bloomberg);
$variacion = explode('<span>', $variacion[1]);
$variacionPorcentual = explode('</span>', $variacion[1]);
$variacionPorcentual = trim(strip_tags($variacionPorcentual[0]));
$variacion = trim(strip_tags($variacion[0]));

$direccion = explode(' ', $variacion);
$direccion = trim($direccion[0]);

$variacion = explode('>', $variacion);
$variacion = trim(strip_tags($variacion[1]));

$open = preg_match_all('/<th>Open:<\/th>\n(.*)<td>(.*)<\/td>/', $bloomberg, $resul);
$open = $resul[2][0];

$daysRange = preg_match_all('/<th>Day\'s Range:<\/th>\n(.*)<td>(.*)<\/td>/', $bloomberg, $resul);
$daysRange = $resul[2][0];

$volume = preg_match_all('/<th>Volume:<\/th>\n(.*)<td>(.*)<\/td>/', $bloomberg, $resul);
$volume = $resul[2][0];

$bid = preg_match_all('/<th class="last">Bid:<\/th>\n(.*)<td class="last">(.*)<\/td>/', $bloomberg, $resul);
$bid = $resul[2][0];

$prevClose = preg_match_all('/<th>Previous Close:<\/th>\n(.*)<td>(.*)<\/td>/', $bloomberg, $resul);
$prevClose = $resul[2][0];

$week52 = preg_match_all('/<th>52wk Range:<\/th>\n(.*)<td>(.*)<\/td>/', $bloomberg, $resul);
$week52 = $resul[2][0];

$year1RTN = preg_match_all('/<th>1-Yr Rtn:<\/th>\n(.*)<td class="(.*)">(.*)<\/td>/', $bloomberg, $resul);
$year1RTN = $resul[3][0];

$year1RTNDireccion = $resul[2][0];

$ask = preg_match_all('/<th class="last">Ask:<\/th>\n(.*)<td class="last">(.*)<\/td>/', $bloomberg, $resul);
$ask = $resul[2][0];


He visto esta pagina http://www.phptoruby.com/ , hay te explica la función ( file_get_contents ) en ruby pero no se como implementarlo.

Entonces , quisiera saber si hay algo en ruby que me facilite a realizar esto , algunos tips , consejos o que gemas puedo emplear.
Gracias.
  #2 (permalink)  
Antiguo 04/04/2013, 01:07
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Consulta convertir web (PHP A RUBY ON RAILS)

Hay una gema llamada Hpricot. Con ella puedes leer cualquier documento html y buscar lo que sea.

Etiquetas: php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.