Creación de Mini Bot PHP Paso a Paso

  • Autor Autor BeatPlus
  • Fecha de inicio Fecha de inicio
B

BeatPlus

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola buenas, pues como me parece interesante este tipo de scripts, voy a poner mi manera de crearlos, buscar datos, imprimirlos.
Aviso, es mi manera (más simple imposible), habrá mejores/peores, eso depende de quien lo mire, ahí va:

Lo primero de todo, es crear un archivo PHP, apuntamos la dirección de la que vamos a sacar datos y escribimos el script.
Para este tutorial, lo que vamos a suponer es que una web mantiene sus enlaces vía un ID numérico que se auto incrementa, supongamos que tengo Enlace eliminado pues el ID sería 1, no siempre será así en todos los sitios, pero es sólo un ejemplo.
PHP:
<?php
// Tutorial básico PHP by BeatPlus

// Creamos un bucle que busque X noticias
for($i=0;$i=7865);$i++){
$url = 'http://example.com/noticias/$i/';

// Obtenemos el contenido en html
$contenido =  file_get_contents($url);

// Ahora para encontrar datos, usaré expresiones regulares, las que yo creo son muy "inflexibles" ya que no soy un experto en ellas.

// Para sacar el contenido entre divs,por ejemplo, cuyo id es noticia utilizaremos lo siguiente
// Si queréis aprender sobre expresiones regulares http://www.lmgtfy.com/?q=expresiones+regulares

preg_match('/<div id="noticia">(.*)<\/div>/sU', $contenido, $noticia);

// Ahora nos dará dos valores, en un array, el primero con los parámetros de la expresión regular y el segundo con el resultado
// El bueno será $noticia[1];
// Si las noticias se repiten, utilizar preg_match_all y devolverá un bucle con todas las noticias.

// Ahora se insertaría un código de SQL ("Insert into... etc.. ") y ya tendrás un minibot.

};
?>
Esto es sólo el script php, yo suelo hacerlo insertando los limites vía POST y así decido yo de cuantas noticias en cuantas.
Saludos!
 
Última edición:
Interesante amigo, gracias.
 
Esta muy bueno! Simple pero potente :encouragement:
 
Se ve interesante, más tarde lo reviso con calma. Gracias
 
si vas a copiar una buena cantidad de contenido de una determinada web, te falto algo muy importante, ya que al copiar dicha suma que pones en el bucle, el servidor dara un fatal error por falta de tiempo

recomendable
colocar este codigo al inicio de tu bot, hara que el tiempo de respuesta sea mas largo y poder ejecutar sin problemas el script
mas info: PHP: set_time_limit - Manual
PHP:
set_time_limit(0);
 
Muy bueno el aporte... +1
 
Parece un buen aporte aunque no entiendo un pomo:ambivalence: pero se valora, gracias
 
buen aporte para los que recien se inician con preg_match_all, ami en lo personal me ha sido de mucha ayuda para sacar contenido de otra web con solo un par d clicks
 
Aconsejo probar esta página para las expresiones regulares Enlace eliminado
 
no es por mal, pero lo veo una "estupidez" poner esto (que no te parezca mal, tu código y tu intención son de lo mejor)

PHP:
for($i=0;$i=7865);$i++){


ponemos

PHP:
preg_match('|<div id="noticia">(.*)<\/div>|U', $contenido, $noticias);

y nos sacara todas las Noticias

foreach($noticias[1] as $noticia) { echo $noticia."<br />"; }

en el forach podemos comprobar si ya se obtuvo.


al usar preg_match deja en noticias 2 multiarrays noticia[0] que mostrara el contenido con <div id="noticia.. y el noticia[1] que lo mostrara sin el 😀

Me parece que no entendiste.
El foreach lo que hace es otra cosa, es decir, pongamos ejemplos prácticos. Quitaré el dominio, por motivos de seguridad, si lo queréis ver MP.

Tengo la url: http://www.dominio.com/1/esto-es-prety-url/
Con lo cual, el 1 es ID, para buscar contenido generalmente se usa este tipo de enlaces, como son las páginas de wordpress sin pretty urls.
Con lo cual, para obtener los 5 primeras páginas con noticias, creo un bucle que me vaya a esas diferentes páginas, y de ahí obtengo los datos.
Por lo tanto, lo que hará el bot será ir a http://www.dominio.com/1/esto-es-prety-url/, luego a http://www.dominio.com/2/esto-es-prety-url/ y así sucesivamente.
Es una manera bastante simple de obtener datos, luego claro el resto del código no he escrito más, depende de que quieres buscar, donde lo quieres insertar etc...
¡Saludos!
 
gracias interesante
 
comprendo, jajaja, oks pero así consumira mucha CPU, prefiero hacerlo un refresh a una variable via get con un conteo xddd

muy bien explicado 😀

Yo lo hago parecido, vía jQuery.
Ahora os pondré un script jQuery que empleo, que lo busque....
 
Buen tuto. Recomendaría usar función sleep (para no cargar el CPU).
Con jQuery ya es otra cosa, es hasta "lindo" haha
 
Perdón, se me olvido.
Yo lo que hago, es obtener el id por post, en el script php, y hago request mediante un simple documento html con el siguiente codigo html:
Insertar CODE, HTML o PHP:
<script type="text/javascript">
/*
 ___                  _    ___   _
(  _`\               ( )_ (  _`\(_ )
| (_) )   __     _ _ | ,_)| |_) )| |  _   _   ___  ©
|  _ <' /'__`\ /'_` )| |  | ,__/'| | ( ) ( )/',__)
| (_) )(  ___/( (_| || |_ | |    | | | (_) |\__, \
(____/'`\____)`\__,_)`\__)(_)   (___)`\___/'(____/

*/

$(document).ready(function(){
  	$("#cancelar").click(function(event){
        event.preventDefault()
    })
	$("#submit").click(function(event){
		event.preventDefault()
			url="bot.php"
			desde=$('#desde').val()
			hasta=$('#hasta').val()
			$('#progreso').html('VALUES ');
			$('#cargando').html('Cargando...');
            for (x = desde; x < hasta; x++) {
                $.post(url, { id: x },
			    function(data) {
				if(data==0)
				{ $('#cargando').html('Error'); }
				else {
				$('#progreso').append(data);
                $('#cargando').html('Quedan ' + x  + ' de '  + hasta)
                }
	        	})
              }

	})
});
</script>
El código me quedo bastante cutre, a que cuando se actualiza no muestra bien las cifras. Además, no me admite mas de 1000 resultados en el bucle, no sé porque...
Ah, y al hacer click en el input cancelar, ejecuta esto onclick="window.stop(); para que deje de funcionar.
¡Saludos!
 
Última edición:
Disculpen mi ignorancia, quiero entender algo este es un script para extraer contenido de las web?

De ser así, vale de algo? lo que pasa es que google según políticas, penaliza este comportamiento. De estar equivocado pido disculpas y ojala me expliquen, gracias
 
Es verdad, google penaliza por hacer eso pero en si el bot esta bueno. Lo mejoraría un poco ya que nadie usa "
http://example.com/noticias/1/ http://example.com/noticias/2/
", yo haría que vaya a la página principal de esa web y saque los links a los posts. Ahora en un rato puede que edite y lo ponga
 
Cito ejemplos:
Un SMF (Pongo una web propia, de un amigo para evitar malos rollos)
Enlace eliminado
Sí tiene funcionan de la misma manera que yo digo, al igual que muchísimas webs que no quiero citar, porque incentivaría a la extracción de datos de estas y mal.
Si queréis más info, un MP y convers por privado.
Aseguro que un gran porcentaje de webs funcionan de esta manera, de todo tipo variedad (foros, comunidades gamers, películas, series, etc...
 
Buenas betas,

No sé nada de esto, pero me gustaría saber si se podría crear un minibot que mirase si hay contenido nuevo en las URLs (Wordpress) que lo diga.

No es para copiar contenido, sino para que me lleguen las noticias lo antes posible, ya que muchos blogs retrasan el envío mediante RSS.

Gracias!


Sent from my iPhone using Tapatalk
 
Parece que está muy bien! gracias por el aporte
 
Atrás
Arriba