26-febrero-2013
admin

Scraping con PHP usando cURL y DOMXPath

Para conectarse a una página web y obtener el código html de ella se puede utilizar la librería cURL.
Documentación: http://php.net/manual/es/book.curl.php

Como ejemplo se muestra esta función que recibe como parámetros la dirección web de la que se desea obtener la información.

function getDomUrl($url){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_REFERER, "");
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
	curl_setopt($ch, CURLOPT_ENCODING, "ISO-8859-1,UTF-8;q=0.7,*;q=0.7");
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 
               (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/535.19 
               (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19");

	$body = (curl_exec($ch));
	curl_close($ch);

	return $body;	
}

A continuación, para procesar este DOM obtenido de una página web podemos utilizar la librería DOMXPath.
Documentación: http://php.net/manual/es/class.domxpath.php

Esta librería utiliza XPath (XML Path Language) que se trata de un lenguaje que permite construir expresiones que recorren y procesan un documento XML.
Documentación: http://es.wikipedia.org/wiki/XPath

Ahora tenemos una función que recibe como parámetros el DOM de una página y una expresión regular XPath que extraerá una parte de dicho DOM.

			
function getDomXPath($domh, $path){
	$xpath = new DOMXPath($domh);
	return $xpath->query($path);
}

Por último, un ejemplo de uso de estos métodos:

$dom = new DOMDocument();
$domhtml = getDomUrl("http://www.disastercode.com.es");
@$dom->loadHTML($domhtml);
$trozo = getDomXPath( $dom, "//div[@id='plantilla']/center/table[2]/tr/td/center/table/tr/*/a[@id='neutro']/../..");

1 Comentario

  • Thank you for tthe auspicious writeup. It in truth used to be a enjoyment account
    it. Look complex tto more brought agreeable from you!
    By the way, how could we keep in touch?

Dejar un comentario


Warning: Undefined variable $user_ID in /homepages/19/d355108566/htdocs/disastercode/wp-content/themes/simploblack/comments.php on line 51

Categorias

Linkedin