Curl PHP

Una manera fácil y rápida para convertir una web en texto es mediante el uso del curl.

Esto ara una llamada al servidor web y mostrara el resultado en una variable.

    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'url de la web');
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $BUFFERO = curl_exec($ch);
    curl_close($ch);

En este caso guardaríamos la respuesta del servidor con la pagina html en la variable «$buffero»

Hacer web scraping en php

¿Qué es la web scraping?

Web scraping es una técnica utilizada mediante programas de software para extraer información de sitios web. Usualmente, estos programas simulan la navegación de un humano en la World Wide Web ya sea utilizando el protocolo HTTP manualmente, o incrustando un navegador en una aplicación.

https://github.com/josAlba/WebScraping

 

Con esta clase podremos sacar información de cualquier pagina.

<?php
class SyncWEB{
	
	private $contenido;
	private $url;
	
	
	public function __construct($url){
		
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$BUFFERO = curl_exec($ch);
		curl_close($ch);
		
		$this->contenido 	= $BUFFERO; 
		$this->url 			= $url;
	}
	
	public function getURL(){
		
		$BUFFERO;
		preg_match_all('/http[^>]+//i', $this->url, $BUFFERO, PREG_PATTERN_ORDER);
		return $BUFFERO[0][0];
		
	}
	
	public function etiquetasHTML($etiqueta="[^>]+"){
		
		$BUFFERO;
		//preg_match_all("|<".$etiqueta.">(.*)</".$etiqueta.">|U", $this->contenido, $BUFFERO, PREG_PATTERN_ORDER);
		preg_match_all("|<".$etiqueta." .*>(.*)</".$etiqueta.">|U", $this->contenido, $BUFFERO, PREG_PATTERN_ORDER);
		return $this->preg_marcht_allARRAY($BUFFERO);
		
	}
	
	public function etiquetaATRIBUTO($id,$atributo="id",$etiqueta="[^>]+"){
		
		$BUFFERO;
		preg_match_all("|<".$etiqueta."".$atributo."=".'"'.$id.'"'.".*>(.*)</".$etiqueta.">|U", $this->contenido, $BUFFERO, PREG_PATTERN_ORDER);
		return $this->preg_marcht_allARRAY($BUFFERO);
	}
	
	public function etiquetaIMG(){
		
		$BUFFERO;
		preg_match_all('/<img[^>]+>/i', $this->contenido, $BUFFERO, PREG_PATTERN_ORDER);
		
		$image					=array();
		$image['imagenes']		=array();
		$image['num_imagenes']	= count($BUFFERO[0]);
		
		for($i=0;$i<count($BUFFERO[0]);$i++){
			
			$image['imagenes'][$i] 				= array();
			$image['imagenes'][$i]['contenido']	= $BUFFERO[0][$i];	
			
			$buffero_imagen = explode('src=',$BUFFERO[0][$i])[1];
			$c = $buffero_imagen[0];
			$buffero_imagen = substr($buffero_imagen, 1);
			$buffero_imagen = explode($c,$buffero_imagen)[0];
			
			$image['imagenes'][$i]['src']		= $buffero_imagen;
		}
		
		return $image;
		
	}
	
	
	
	private function preg_marcht_allARRAY($BUFFERO){
		
		$ARRAY_ETIQUETAS					=array();
		$ARRAY_ETIQUETAS['etiquetas']		=array();
		$ARRAY_ETIQUETAS['num_etiquetas']	= count($BUFFERO[0]);
		
		for($i=0;$i<count($BUFFERO[0]);$i++){
			
			$ARRAY_ETIQUETAS['etiquetas'][$i] 				= array();
			$ARRAY_ETIQUETAS['etiquetas'][$i]['etiqueta'] 	= explode('>',$BUFFERO[0][$i])[0].'>';
			$ARRAY_ETIQUETAS['etiquetas'][$i]['contenido']	= $BUFFERO[1][$i];	
			$ARRAY_ETIQUETAS['etiquetas'][$i]['todo']		= $BUFFERO[0][$i];
		}
		
		return $ARRAY_ETIQUETAS;
		
	}
}
	

?>