Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Scrapear utilizando PHP nativo y la librería Curl
#1

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:

Código:
<?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:

Código:
<?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.php

Canal SEO en Telegram premium
Influenet - Compra/Venta de artículos patrocinados. Sonrisa
Responder
#2

Usa phpquery. Es el mejor para scrapear desde php... un saludo.

Enviado desde mi bq Aquaris

heyla03, orgulloso de ser un miembro de Foro Black Hat SEO desde Jul 2014.
Responder
#3

(29-07-2014, 12:24 AM)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:

Código PHP:
<?PHP
function get_content_url($url) {
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL$url);
    
curl_setopt($chCURLOPT_HEADERfalse);
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1); 
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT5);
    
curl_setopt($chCURLOPT_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(); 

Canal SEO en Telegram premium
Influenet - Compra/Venta de artículos patrocinados. Sonrisa
Responder
#4

Si yo lo obtengo con curl y con phpquery parseo lo que quiero extraer.

Enviado desde mi bq Aquaris

heyla03, orgulloso de ser un miembro de Foro Black Hat SEO desde Jul 2014.
Responder
#5

a mi no me llega a descargar el fichero de la web ¿???
Responder
#6

¿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?

pabl0p, orgulloso de ser un miembro de Foro Black Hat SEO desde Dec 2014.
Responder
#7

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);

Canal SEO en Telegram premium
Influenet - Compra/Venta de artículos patrocinados. Sonrisa
Responder
#8

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 Gran sonrisa

[Imagen: firma_script_3_en_1.jpg]
Responder


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje
Último mensaje por Chiriz
19-03-2017, 08:10 AM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)
Telegram Grupo Telegram