Saludos, estoy programando un script en php para poder extraer todos los libros de la web http://www.casadellibro.com/.
como los permalinks tienen los nombres de las entradas:
http://www.casadellibro.com/libro-el-ultimo-caton/9788408083450/1222964
se me ha ocurrido cambiar el ultimo número que es el ID del libro, ej:
http://www.casadellibro.com/libro-el-ultimo-caton/9788408083450/1
en el navegador funciona pero a la hora de hacer un file_get_contents() no funciona.
Por favor necesito ayuda. Gracias y disculpen las molestias!
Es bastante raro lo que te ocurre, probé también con un simple script en curl y tampoco funciona, pero por suerte, después de mucho intentarlo, pude hacerlo funcionar :D
<?php
//Script adaptado para recoger información de todos los libros de casadellibro.com.
//By blackdrake
//Id del libro
$id = "2193770";
//Recogemos los datos de ese libro
$datos = recoger_web('http://www.casadellibro.com/libro-el-ultimo-caton/9788408083450/'.$id);
//Mostramos la pagina
echo $datos;
//Obtenemos los datos de la web
function recoger_web($url) {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0");
curl_setopt($c, CURLOPT_MAXREDIRS, 10);
$follow_allowed = ( ini_get('open_basedir') || ini_get('safe_mode')) ? false : true;
if ($follow_allowed) {
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
}
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 9);
curl_setopt($c, CURLOPT_REFERER, $url);
curl_setopt($c, CURLOPT_TIMEOUT, 60);
curl_setopt($c, CURLOPT_AUTOREFERER, true);
curl_setopt($c, CURLOPT_ENCODING, 'gzip,deflate');
$data = curl_exec($c);
$status = curl_getinfo($c);
curl_close($c);
if ($status['http_code'] == 200) {
return $data;
}
elseif ($status['http_code'] == 301 || $status['http_code'] == 302) {
if (!$follow_allowed) {
if (empty($redirURL)) {
if (!empty($status['redirect_url'])) {
$redirURL = $status['redirect_url'];
}
} if (empty($redirURL)) {
preg_match('/(Location:|URI:)(.*?)(\r|\n)/si', $data, $m);
if (!empty($m[2])) {
$redirURL = $m[2];
}
} if (empty($redirURL)) {
preg_match('/href\=\"(.*?)\"(.*?)here\<\/a\>/si', $data, $m);
if (!empty($m[1])) {
$redirURL = $m[1];
}
} if (!empty($redirURL)) {
$t = debug_backtrace();
return call_user_func($t[0]["function"], trim($redirURL), $post_paramtrs);
}
}
}
return "Error en la url: $url!!<br/><br/> Petición enviada<b/>:<br/>" . json_encode($status) . "<br/><br/>Web capturada (con el error):$data";
}
Saludos
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Es bastante raro lo que te ocurre, probé también con un simple script en curl y tampoco funciona, pero por suerte, después de mucho intentarlo, pude hacerlo funcionar :D
<?php
//Script adaptado para recoger información de todos los libros de casadellibro.com.
//By blackdrake
//Id del libro
$id = "2193770";
//Recogemos los datos de ese libro
$datos = recoger_web('http://www.casadellibro.com/libro-el-ultimo-caton/9788408083450/'.$id);
//Mostramos la pagina
echo $datos;
//Obtenemos los datos de la web
function recoger_web($url) {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0");
curl_setopt($c, CURLOPT_MAXREDIRS, 10);
$follow_allowed = ( ini_get('open_basedir') || ini_get('safe_mode')) ? false : true;
if ($follow_allowed) {
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
}
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 9);
curl_setopt($c, CURLOPT_REFERER, $url);
curl_setopt($c, CURLOPT_TIMEOUT, 60);
curl_setopt($c, CURLOPT_AUTOREFERER, true);
curl_setopt($c, CURLOPT_ENCODING, 'gzip,deflate');
$data = curl_exec($c);
$status = curl_getinfo($c);
curl_close($c);
if ($status['http_code'] == 200) {
return $data;
}
elseif ($status['http_code'] == 301 || $status['http_code'] == 302) {
if (!$follow_allowed) {
if (empty($redirURL)) {
if (!empty($status['redirect_url'])) {
$redirURL = $status['redirect_url'];
}
} if (empty($redirURL)) {
preg_match('/(Location:|URI:)(.*?)(\r|\n)/si', $data, $m);
if (!empty($m[2])) {
$redirURL = $m[2];
}
} if (empty($redirURL)) {
preg_match('/href\=\"(.*?)\"(.*?)here\<\/a\>/si', $data, $m);
if (!empty($m[1])) {
$redirURL = $m[1];
}
} if (!empty($redirURL)) {
$t = debug_backtrace();
return call_user_func($t[0]["function"], trim($redirURL), $post_paramtrs);
}
}
}
return "Error en la url: $url!!<br/><br/> Petición enviada<b/>:<br/>" . json_encode($status) . "<br/><br/>Web capturada (con el error):$data";
}
Saludos
le voy a echar un vistazo. Muchas gracias máquina, te debo una! ;D
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
le voy a echar un vistazo. Muchas gracias máquina, te debo una! ;D
Avisa si te funciona :D
Saludos.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
le voy a echar un vistazo. Muchas gracias máquina, te debo una! ;D
Avisa si te funciona :D
Saludos.
Perfectamente, ahora un for y para la base de datos! 8)
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
le voy a echar un vistazo. Muchas gracias máquina, te debo una! ;D
Avisa si te funciona :D
Saludos.
Perfectamente, ahora un for y para la base de datos! 8)
Perfecto, doy el tema como solucionado, cualquier cosa, vuelves a postear :D
Saludos.