Foros del Web » Programando para Internet » PHP »

Extaer datos de una web haciendo login (Dom)

Estas en el tema de Extaer datos de una web haciendo login (Dom) en el foro de PHP en Foros del Web. Buenas, mi intención es hacer unas estadisticas con unos datos existentes en una web. Para entrar en dicha web es necesario estar registrado (lo cual ...
  #1 (permalink)  
Antiguo 15/10/2010, 03:01
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 0
Extaer datos de una web haciendo login (Dom)

Buenas,

mi intención es hacer unas estadisticas con unos datos existentes en una web. Para entrar en dicha web es necesario estar registrado (lo cual estoy) y creo que es ahí donde estoy dandome contra la pared una y otra vez.

Probé con curl y no tuve exito:

$url = "http://url.com/";
$postData = array("username" => "usuario", "password" => "pass");
/*Convierte el array en el formato adecuado para cURL*/
$elements = array();
foreach ($postData as $name=>$value) {
$elements[] = "{$name}=".urlencode($value);
}
$handler = curl_init();
curl_setopt($handler, CURLOPT_URL, $url);
curl_setopt($handler, CURLOPT_POST,true);
curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
$response = curl_exec ($handler);
curl_close($handler);



He probado con Dom pero no se como enviar las variables POST del login (tampoco se si ahí está o no mi problema) y el tema es que cada vez que conecto me redirige a la página donde está el login. El codigo es tal que así:

require("simplehtmldom/simple_html_dom.php");

$url="http://url.com";

$html=file_get_contents($url);

/*** a new dom object ***/
$dom = new domDocument;

/*** load the html into the object ***/
$dom->loadHTML($html);

/*** discard white space ***/
$dom->preserveWhiteSpace = false;

/*** the table by its tag name ***/
$tables = $dom->getElementsByTagName('table');

/*** get all rows from the table ***/
$rows = $tables->item(0)->getElementsByTagName('tr');

/*** loop over the table rows ***/
foreach ($rows as $row)
{
/*** get each column by tag name ***/
$cols = $row->getElementsByTagName('td');
/*** echo the values ***/
echo $cols->item(0)->nodeValue.',';
echo $cols->item(1)->nodeValue.',';
echo $cols->item(2)->nodeValue.',';
echo $cols->item(3)->nodeValue.',';
echo $cols->item(4)->nodeValue;
echo '<br />';
}


¿Alguna solución para arreglar el codigo con DOM? ¿alguna sugerencia o alternativa para poder obtener dichos datos? ¿Con visual basic podria tener mas exito? Cualquier aportación será de agradecer porque la verdad estoy que no se por donde tirar... :S
  #2 (permalink)  
Antiguo 16/10/2010, 03:17
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Extaer datos de una web haciendo login (Dom)

No se vé muy bien a qué tipo de información quires acceder.
Si la página requiere login por post, por ejemplo, puedes hacer una llamada directamente al action del formulario de logue pasandole los valores que requiere.
Es decir, te vas a la pagina de login, mira el código fuente y obtiene los nombres de los campo del formualario y el action del formulario.
Teniendo esta info haces tu propio script PHP que envíe la información sin pasar por la pagina de login, a partir de aquí, a obtener la información que buscas.
No sé si te entendí bien de todas maneras, a ver si funciona o si pones otro ejemplo, 1 saludo.
  #3 (permalink)  
Antiguo 16/10/2010, 04:52
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Extaer datos de una web haciendo login (Dom)

Pues no era mala idea la verdad... pero sigo en las mismas :(, cuando introduzco el usuario y contraseña me redirige a la página del login y no me deja entrar en la pagina que busco.

Explico un poco más el tema:

Lo que quiero es entrar en una pagina de un juego donde hay una clasificación y tomar los datos de esa clasificación diariamente para ver la evolución de cada jugador.
El código para recoger los datos lo tengo (seria recorrer una tabla), el problema es que si intento acceder directamente a la pagina de la clasificación obtengo los datos que hay en la pagina del login, es decir, obbtengo los datos de tabla del formuario para hacer logeo (me aparece: usuario, contraseña, aceptar).

Entonces mi duda es.... ¿me redirige porque detecta que no estoy logeado? ¿Tendrá un sistema para que no se pueda entrar directamente a la página de la clasificación?

Lo que me choca es que yo guardo las contraseña y no tengo que hacer nunca login (bueno, la primera vez si) podiendo entrar a cualquier página directamente sin que me dé problema, pero sin embargo al entrar utilizando el "loadHTML" si me redirige a la página del login.

Etiquetas: dom, login
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 00:04.