Tutorial Hacer un scrapper en PHP de forma fácil para ganar $$ de forma automática

Estado
No está abierto para más respuestas.

¡Que Menú!

Suspendido
Mensajes
55
Puntuación de reacción
0
Hola ciudadanos de un lugar llamado mundo

Os traigo mi primer tutomierder que quizás os resulte útil para sacar información de otras webs y así ganar algo de $$ con el pasar de los días.

¿Que necesitamos?
  • Un hosting (cuantos más recursos mejor), importante que tenga CURL activado
  • Navegador Chrome
  • Mínimo una web para hacer scrap
  • Ganas de aprender
  • Un miembro de 7cm mínimo (Esto no es 100% requerido, sino casi nadie de aquí podría hacerlo :dale2:)

El procedimiento es muy fácil una vez que le pillas el truco, a mi en mis inicios me costó bastante, pero también cabe destacar que los tutoriales que encontraba eran super raros y había que hacer millones de cosas extrañas. Este es fácil, bonito y sencillo.


Empecemos

La url a scrappear será:

Código:
http://www.cinetube.es/peliculas/comedia/ver-pelicula-torrente-5-operacion-eurovegas.html

En nuestro archivo php iniciamos la conexión con dicha URL y la guardamos en una variable nuestra
PHP:
	// Para que se vean bien los caracteres extraños
		header('Content-Type: text/html; charset=utf-8');
	// Creamos la conexión con la página
		$urlCT = "http://www.cinetube.es/peliculas/comedia/ver-pelicula-torrente-5-operacion-eurovegas.html";
		$ch = curl_init($urlCT);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$cl = curl_exec($ch);
		$dom = new DOMDocument();
		@$dom->loadHTML($cl);
		
		$xpath = new DOMXpath($dom);

Ahora, con Google Chrome (puede ser otro navegador pero yo lo enseño con este) buscamos el XPATH de los elementos que queremos extraer:

f2c9047c0bc0cb8523b12c6ad2f1a524.gif


Con el XPATH copiado hacemos CTRL+V en nuestro archivo PHP de la siguiente form

PHP:
$tituloQuery 	= $xpath->query('//section[2]/section/article/section/header/a/h1/text()');

Ahora, para extraer la información de ese XPATH y poder manipularla con mayor facilidad creamos otra variable con el siguiente contenido

PHP:
$titulo 		= $tituloQuery->item($x)->nodeValue;

Repetimos el proceso con todos los elementos que queramos sacar (en este caso -> Genero, Año, Titulo y Portada).

PHP:
	// Buscamos cada elemento
		$generoQuery 	= $xpath->query('//section[2]/section/article/section/ul[2]/li/div[1]/div[2]/a/text()');
		$anyoQuery 		= $xpath->query('//section[2]/section/article/section/ul[2]/li/div[2]/div[2]/a/text()');
		$tituloQuery 	= $xpath->query('//section[2]/section/article/section/header/a/h1/text()');
		$caratulaQuery 	= $xpath->query('//section[2]/section/article/aside/div[1]/img/@src');
	//Igualamos cada elemento a una variable para manejarlo de una mejor manera.
		$genero 		= $generoQuery->item($x)->nodeValue;
		$anyo 			= $anyoQuery->item($x)->nodeValue;
		$titulo 		= $tituloQuery->item($x)->nodeValue;
		$caratula		= $caratulaQuery->item($x)->nodeValue;



Y ahora ya podemos mostrarlos, insertarlos en una BBDD, editarlos, lo que queramos con ello.

PHP:
	//Imprimimos los datos extraidos
		echo "<strong>Portada: </strong><img src='".$caratula."' height=120px;></br>";
		echo "<strong>Genero: </strong>".$genero."</br>";
		echo "<strong>Año: </strong>".$anyo."</br>";
		echo "<strong>Titulo: </strong>".$titulo."</br>";


El resultado final de nuestro archivo es el siguiente, y con esto sacaremos los datos de una forma fácil y rápida.

PHP:
<?php
	// Para que se vean bien los caracteres extraños
		header('Content-Type: text/html; charset=utf-8');
	// Creamos la conexión con la página
		$urlCT = "http://www.cinetube.es/peliculas/comedia/ver-pelicula-torrente-5-operacion-eurovegas.html";
		$ch = curl_init($urlCT);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$cl = curl_exec($ch);
		$dom = new DOMDocument();
		@$dom->loadHTML($cl);
		
		$xpath = new DOMXpath($dom);
	// Buscamos cada elemento
		$generoQuery 	= $xpath->query('//section[2]/section/article/section/ul[2]/li/div[1]/div[2]/a/text()');
		$anyoQuery 		= $xpath->query('//section[2]/section/article/section/ul[2]/li/div[2]/div[2]/a/text()');
		$tituloQuery 	= $xpath->query('//section[2]/section/article/section/header/a/h1/text()');
		$caratulaQuery 	= $xpath->query('//section[2]/section/article/aside/div[1]/img/@src');
	//Igualamos cada elemento a una variable para manejarlo de una mejor manera.
		$genero 		= $generoQuery->item($x)->nodeValue;
		$anyo 			= $anyoQuery->item($x)->nodeValue;
		$titulo 		= $tituloQuery->item($x)->nodeValue;
		$caratula		= $caratulaQuery->item($x)->nodeValue;
		
	//Imprimimos los datos extraidos
		echo "<strong>Portada: </strong><img src='".$caratula."' height=120px;></br>";
		echo "<strong>Genero: </strong>".$genero."</br>";
		echo "<strong>Año: </strong>".$anyo."</br>";
		echo "<strong>Titulo: </strong>".$titulo."</br>";

		 

?>

Resultado:

4b6a603be917d903d5ed7e3f2f61f14f.gif

Sin más, me despido y espero que os sea útil.
 
Última edición:

onuland

Cobre
Usuario de Bronce
Mensajes
422
Puntuación de reacción
0
Mola, a favoritos para un posterior estudio (cosillas que uno tiene en mente :sisi1:)
 
Mensajes
121
Puntuación de reacción
0
si usas CURL y no pones el user-agent, la mayoría de webs que quieras scrapear te enviaran al cuerno
 

¡Que Menú!

Suspendido
Mensajes
55
Puntuación de reacción
0
muchas webs te sirven una página de error si "quien extrae sus datos" no es un navegador, por ejemplo coches.net; pero solo hay que configurar el user-agent en el CURL y ya está.

Wow, lo tendré en cuenta y editaré el tutorial en cuanto aprenda su funcionamiento. Gracias por el apunte!

- - - Actualización- - -

Aviso: Si tenéis dudas mejor que las expongáis aquí ya en caso de que pueda resolverlas le servirá a más gente, y en caso que desconozca la repuesta... quizás otra persona os pueda ayudar.

Se que es de lógica, pero hay alguno que me ha preguntado por privado y al darle esta respuesta me dice "Gracias por nada" pos vale.
 

josemoreno

Piedra
Usuario de Piedra
Mensajes
48
Puntuación de reacción
0
Gracias buen aporte

Enviado desde mi GT-I9300 usando Tapatalk 2
 
Mensajes
155
Puntuación de reacción
0
muy bueno! justamente queria hacer algo asi y con la misma pelicula jaja:sisi1:
 

¡Que Menú!

Suspendido
Mensajes
55
Puntuación de reacción
0
Gracias a todos, el tuto es simple, quizás con más tiempo haga uno más extenso para scrapear una web entera e ir publicando en wordpress las entradas.
 
Estado
No está abierto para más respuestas.
Arriba