Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: MaximAlekz en 10 Enero 2016, 07:30 am



Título: Obtener informacion de una pagina con php
Publicado por: MaximAlekz en 10 Enero 2016, 07:30 am
Hola, buen día.

Tengo mi buscador, uno tipo google. Pero no es para buscar en toda la internet. Sólo local. Tengo una pagina de prueba con texto.
Ambas en el hosting claro está.

Lo que quiero es, que al registrar la URL de la pagina de prueba en mi base de datos, mi buscador analice dicha pagina y me muestre si hay alguna coincidencia o similitud con la palabra que estoy buscando, también que encontrara alguna imagen por medio de su "name" o "alt". Necesito varios casos para tener un buscador más completo.

Me sería de gran ayuda que pudieran ayudarme  ;D
Gracias.


Título: Re: Obtener informacion de una pagina con php
Publicado por: #!drvy en 12 Enero 2016, 14:54 pm
Sin codigo ni mas detalles es imposible ayudarte. Lo que pides no es precisamente algo "simple".

Saludos


Título: Re: Obtener informacion de una pagina con php
Publicado por: MaximAlekz en 12 Enero 2016, 22:39 pm
Bueno, es por eso que he venido a este foro. Este foro no es para cosas "sencillas". Gracias por responder


Título: Re: Obtener informacion de una pagina con php
Publicado por: MaximAlekz en 12 Enero 2016, 22:44 pm
Ahora bien, aquí está mi código.
Index.php


Código
  1. <?php
  2. require_once 'Conexion.php';
  3. @$Buscar = $_GET['Buscar'];
  4. ?>
  5. <html>
  6.    <head>
  7.        <title><?php echo $Buscar; ?> - M&aacute;xima S</title>
  8.        <link rel="stylesheet" type="text/css" href="css/stail.css">
  9.    </head>
  10. <body>
  11. <form method="GET" action="">
  12. <table>
  13. <tr>
  14.    <td><h1 id="engine"><a href="index.php">M&aacute;xima Search</a></h1></td>
  15. </tr>
  16. <tr>
  17.   <td><div id="searchbox"><input autocomplete="off" id="search" type="text" name="Buscar" placeholder="Qu&eacute; quieres buscar" value="<?php echo $Buscar; ?>" /></div></td>
  18. </tr>
  19. </table>
  20. <div id="total-result-search">
  21.    <table border="0" width="600px">
  22.  
  23.            <?php
  24.            if($Buscar == NULL)
  25.            {
  26.                echo "<tr><td><div id='subindice-searchbox'>Ingrese una palabra o frase en el cuadro de b&uacute;squeda</div></td></tr>";
  27.            }else{
  28.            $Busqueda = "SELECT * FROM paginas WHERE Nombre LIKE '%$Buscar%' OR NombreCarEspecial LIKE '%$Buscar%' OR URL LIKE '%$Buscar%' OR Descripcion LIKE '%$Buscar%' ";
  29.            $Resultado = mysql_query($Busqueda);
  30.            $Numero_De_Resultados = @mysql_num_rows($Resultado);
  31.            echo "<tr><td><div id='subindice-searchbox'>Resultados de la busqueda</div></td></tr>";
  32.            echo "<br />";
  33.                 if ($Numero_De_Resultados < 1)
  34.                    {
  35.                       echo "<tr><td><div id='subindice-searchbox'>Sin resultados</div></td></tr>";
  36.                    }
  37.                        elseif($Numero_De_Resultados == 1)
  38.                         {
  39.                            echo "<tr><td><div id='subindice-searchbox'>Solo un resultado</div></td></tr>";
  40.                            echo "<br /><br />";
  41.                            $Inicio = 0;
  42.                        }
  43.                        elseif($Numero_De_Resultados > 1)
  44.                        {
  45.                            echo "<tr><td><div id='subindice-searchbox'>Varios resultados = ".$Numero_De_Resultados."</div></td></tr>";
  46.                            echo "<br /><br />";
  47.                            $Inicio = 0;
  48.                        }
  49.                        else
  50.                        {
  51.                            echo "Error";
  52.                        }
  53.            }
  54.  
  55.            while (($Fila = @mysql_fetch_array($Resultado)) && ($Inicio < 10))
  56.            {
  57.                $Nombre = $Fila['Nombre'];
  58.                $URL = $Fila['URL'];
  59.                $Descripcion = $Fila['Descripcion'];
  60.  
  61.                echo "<tr><td><a id='nombrepagina-search' href='$URL'>".$Nombre."<a></td></tr>";
  62.                echo "<tr><td><div id='descripcionpagina1-search'>".$URL."</div></td></tr>";
  63.                echo "<tr><td><div id='descripcionpagina2-search'>".$Descripcion."</div></td></tr>";
  64.                echo "<tr><td><hr id='linea-separa-search'></hr></td></tr>";
  65.                $Inicio++;
  66.            }
  67.  
  68.            ?>
  69.    </tr>
  70.    </table>
  71.    </div>
  72. </form>
  73. </body>
  74. </html>

Agregar.php - Para agregar más resultados a mi base de datos, y que así sean captados por mi buscador.

Código
  1. <?php
  2. require_once 'Conexion.php';
  3. @$Nombre_web = $_POST['Nombre'];
  4. @$URL_web = $_POST['URL'];
  5. @$Descripcion_web = $_POST['Descripcion'];
  6. @$NameEspecial = $_POST['NombreCarEspecial'];
  7. if($_POST)
  8. {
  9.   if($Nombre_web == "")
  10.   {
  11.       echo "No has ingresado el <b>nombre</b> de la pagina web a agregar";
  12.   }
  13.   elseif($URL_web == "")
  14.   {
  15.       echo "<br />No has ingresado la <b>URL</b> de la pagina web a agregar";
  16.   }
  17.   elseif($Descripcion_web == "")
  18.   {
  19.       echo "<br />No has ingresado la <b>descripcion</b> de la pagina web a agregar";
  20.   }
  21.  else
  22.  {
  23.   $Guardando = "INSERT INTO paginas (Nombre, NombreCarEspecial, Descripcion, URL) ".
  24.     "VALUES ('".$_POST['Nombre']."', '".$_POST['NombreCarEspecial']."', '".$_POST['Descripcion']."', '".$_POST['URL']."')";
  25.  
  26.   mysql_query($Guardando);
  27.   echo 'Listo, amigo m&iacute;o<br />';
  28.   echo '<a href="index.php">Volver</a> a al buscador y comprobar la busqueda';
  29.   exit();}}
  30. ?>
  31. <html>
  32.    <body>  
  33.    <head>
  34.        <title>Agregar paginas web</title>
  35.    </head>
  36. <form method="POST" action="">
  37. <h1>Agregar resultados a Máxima Search</h1>
  38.    <input id="nombrepag-alt" type="text" placeholder="Nombre de la p&aacute;gina" name="Nombre" value="<?php echo $Nombre_web; ?>">
  39.    <input id="caracterespecial-alt" type="text" placeholder="Caracteres especiales" name="NombreCarEspecial" value="<?php echo $NameEspecial; ?>">
  40.    <br />
  41.    <label>URL:</label>
  42.    <br />
  43.    <input type="text" name="URL" value="<?php echo "http://".$URL_web; ?>">
  44.    <br />
  45.    <label>Descripcion:</label>
  46.    <br />
  47.    <textarea name="Descripcion"><?php echo $Descripcion_web; ?></textarea>
  48.    <br />
  49.    <input type="submit" value="Registrar pagina web" />
  50.  
  51. </form>
  52.    </body>
  53.    </html>

Por último el archivo que realiza la conexión - conexión.php

Código
  1. <?php
  2. $Conexion = mysql_connect('localhost', 'root', '') or die("No se pudo conectar con el servidor");
  3. mysql_select_db('buscador', $Conexion) or die ("No se pudo seleccionar a la base de datos");
  4. ?>


Título: Re: Obtener informacion de una pagina con php
Publicado por: LuffyFF en 13 Enero 2016, 01:50 am
Lo que quieres se llama "scraping".

Pero al ser un entorno local y usar una base de datos, puedes programar las similitudes usando la base de datos, sin necesidad de scrapear la página.

Ahora si quieres scrappear la página, lo que tienes que hacer con PHP, es abrir la URL, guardarla en una variable, y luego analizar el html o contenido de la variable. Y aplicar distintas funciones de PHP para filtrar.

Si quieres facilitar las cosas puedes usar la clase Snoopy (para scrapear).

Igual, te recomiendo usar la base de datos y manipular la data desde ahí.

Saludos


Título: Re: Obtener informacion de una pagina con php
Publicado por: xiruko en 13 Enero 2016, 03:33 am
Hola, si estás haciendo este buscador por el mero hecho de aprender entonces ya te han comentado algunas soluciones. Ahora bien, si lo que quieres es añadir esa funcionalidad a tu página con las menores complicaciones posibles, por qué no personalizas un buscador de Google para que solo busque en tu dominio y lo metes en tu web?

https://cse.google.com/cse/create/new (https://cse.google.com/cse/create/new)

Saludos!


Título: Re: Obtener informacion de una pagina con php
Publicado por: MaximAlekz en 14 Enero 2016, 05:25 am
Gracias LuffyFF, y xiruko.
Si, Luffy. Me diste una buena solución.
También tú xiru, pero es que quiero algo original, el buscador de Google ya es muy repetido :/

Gracias a todos por responder a mi tema.[/size]


Título: Re: Obtener informacion de una pagina con php
Publicado por: mexuru en 16 Enero 2016, 01:19 am
Tenga una dudas sobre to proyecto:

1) Todo lo esta probando en localhost?
2) Las paginas que vas a grabar en tu buscador tambien se alojan en tu servidor?

Saludos y quedo al pendiente de tu respuesta.


Título: Re: Obtener informacion de una pagina con php
Publicado por: MaximAlekz en 16 Enero 2016, 16:38 pm
Si, así es amigo mío.