Scrapear utilizando PHP nativo y la librería Curl
Iniciado por Sauron · 19 mar 2014 · 7 respuestas · 15.162 visitas
Sauron Para sacar información de una web es muy sencillo, con los dos trozos de código que os voy a mostrar vas a poder hacerlo sin problemas.
Para el caso de utilizar las funciones nativas de PHP sería:
<?PHP $html = file_get_contents('http://foroblackhat.com/'); preg_match('/<title>(.*)<\/title>/i', $html, $title); $title_out = $title[1];
En este caso estamos sacado el Título de una URL que le hemos pasado la función file_get_contents que nos devuelve el HTML de esa URL.
Si quieres trabajar con una librería más potente te recomiendo Curl por defecto suele venir ya instalada. El código sería:
<?PHP function get_content_url($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8'); $data = curl_exec($ch); curl_close($ch); return $data; } $html = get_content_url('http://foroblackhat.com/'); preg_match('/<title>(.*)<\/title>/i', $html, $title); $title_out = $title[1];
Como puedes ver en esta nos deja meter más parámetros como puede ser el User Agent y demás. Si quieres conocer todas las posibilidades de esta librería que es muy potente te recomiendo la web oficial de PHP:
http://www.php.net/manual/es/book.curl.phpheyla03 Usa phpquery. Es el mejor para scrapear desde php... un saludo.
Enviado desde mi bq AquarisSauron heyla03 escribió:Usa phpquery. Es el mejor para scrapear desde php... un saludo.
Muy interesante phpQuery, pero para obtener el HTML de una web es mejor emplear la librería cURL, el ejemplo del hilo hecho con phpQuery:
<?PHP function get_content_url($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8'); $data = curl_exec($ch); curl_close($ch); return $data; } //Get the HTML string from cURL $document_html_string = file_get_contents('http://foroblackhat.com/'); //Create new instance of phpQuery //We assume the phpoQuery library is included at the top or your script. phpQuery::newDocument($document_html_string); $inputs = array(); //Create an empty array to hold the inputs. //Get title $title_out = $pq->find("title")->text();heyla03 Si yo lo obtengo con curl y con phpquery parseo lo que quiero extraer.
Enviado desde mi bq Aquarisvmartinez a mi no me llega a descargar el fichero de la web ¿???pabl0p ¿Es posible navegar por una web con código PHP?
Me explico:
- Accedo a una web en la que hay un botón.
- Si pulso en ese botón, me lleva a una URL determinada (la URL cambia cada vez)
Esa URL última es la que quiero sacar, ¿sabéis cómo puedo hacerlo?Sauron @"pabl0p" si lo que quieres tomar la última URL efectiva al seguir cierta URL que te lleva a otra URL se puede hacer con la opción CURLINFO_EFFECTIVE_URL
Te recomiendo mirarte la documentación de CURL:
http://php.net/manual/es/function.curl-getinfo.php
$ultimo_enlace = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);ErickGS Vaya justo esto he andado buscando, yo lo hacía con el primer método y no funcionaba siempre porque las web lo bloqueaban, veremos que tal trabaja el segundo :D
Este hilo pertenece al archivo del foro y ya no admite respuestas.
Otros hilos de esta sección
- Social Locker simple en HTML y JavaScriptSauron · 16 jun 201420 respuestas · 47.307 visitasÚltimo mensaje: 7 dic 2018
- Script para postear en diferentes grupos de Facebookrodrigol · 6 jun 201418 respuestas · 43.485 visitasÚltimo mensaje: 7 may 2018
- Scrapear con phytoncarlosse · 3 may 201411 respuestas · 24.557 visitasÚltimo mensaje: 19 mar 2017
- Desofuscar código JavaScriptSauron · 7 ago 20147 respuestas · 18.061 visitasÚltimo mensaje: 12 oct 2016
- Redirección .htaccess de un dominiowrongchris · 15 mar 20174 respuestas · 15.565 visitasÚltimo mensaje: 29 nov 2017
- Ayuda script para forzar a ver anuncio a los usuariosdobrick · 26 feb 20185 respuestas · 15.034 visitasÚltimo mensaje: 12 may 2019
- Duda para desarrolladores webharmonica · 8 may 20158 respuestas · 14.252 visitasÚltimo mensaje: 20 jul 2015
- Auto login Dropbox con iMacrosaprengo · 30 abr 201510 respuestas · 13.047 visitasÚltimo mensaje: 6 may 2015

