Inicio > PHP > Web scraping

WEB SCRAPING

11/11/2017PHP

 

Hace un tiempo un compañero de trabajo me comentó que un amigo suyo tenía una web que recogía información de varias webs sobre resultados de fútbol. No le di importancia hasta wue en un blog leí sobre el web scraping y me acordé de lo que me contó este antiguo compañero.
La verdad es que no es nada complicado: Se trata de obtener el html de la web, o webs, de donde se quiere obtener la información y obtener dicha información.
Dicho html se puede obtener con una llamada curl o con la función de php file_get_contents, que aparte de obtener el contenido de un fichero obtiene el html de una página web.
El html se puede parsear con expresiones regulares o con DOM. Yo personalmente prefiero con DOM porque es más limpio. La única pega es que el html puede estar mal formado y no serviría.
Os pongo un ejemplo que obtiene la combinación del euromillones:

class Scrape {
// Declaring class variables and arrays
public $url;
public $source;
public $baseUrl;

private $parsedUrl = array();
// Construct method called on instantiation of object
function __construct($url) {
$this->url = $url; // Setting URL attribute
$this->source = $this->curlGet($this->url);
$this->xPathObj = $this->returnXpathObject($this->source);
$this->parsedUrl = parse_url($this->url);
$this->baseUrl = $this->parsedUrl['scheme'] . '://' . $this->parsedUrl['host'];
}
// Method for making a GET request using cURL
public function curlGet($url) {
$ch = curl_init(); // Initialising cURL session
// Setting cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Returning transfer as a string
curl_setopt($ch, CURLOPT_URL, $url); // Setting URL
$results = curl_exec($ch); // Executing cURL session
curl_close($ch); // Closing cURL session
return $results; // Return the results
}
// Method to return XPath object
public function returnXPathObject($item) {
$xmlPageDom = new DomDocument(); // Instantiating a new DomDocument object
@$xmlPageDom->loadHTML($item); // Loading the HTML fromdownloaded page
$xmlPageXPath = new DOMXPath($xmlPageDom); // Instantiatingnew XPath DOM object
return $xmlPageXPath; // Returning XPath object
}
}
Est código no lo explico demasiado ya que con este post solo quería explicar el concepto de lo que es el web scraping.
Un saludo y gracias.