Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2010, 03:01
juansn
 
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