Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Es posible insertar directamente datos extraídos de una web en una BBDD propia?

Estas en el tema de ¿Es posible insertar directamente datos extraídos de una web en una BBDD propia? en el foro de PHP en Foros del Web. Buenas, Esa es la duda que tengo. Estoy haciendo una BBDD de películas y me gustaría saber si es posible y de que manera podría ...
  #1 (permalink)  
Antiguo 25/02/2016, 05:46
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
¿Es posible insertar directamente datos extraídos de una web en una BBDD propia?

Buenas,

Esa es la duda que tengo. Estoy haciendo una BBDD de películas y me gustaría saber si es posible y de que manera podría extraer los datos de las películas de, por ejemplo, www.filmaffinity.com e insertarlos directamente en los campos de mi BBDD.

Hace relativamente poco que empecé con PHP y ando algo perdido en ese aspecto, muchas gracias de antemano.
  #2 (permalink)  
Antiguo 25/02/2016, 05:55
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

lo primero si se puede, lo segundo no debes hacerlo, menosprecias el trabajo de los creadores de dicha pagina, salvo que solicites autorizacion de ellos porque hasta donde se es ilegal hacerlo, lo mejor es que crees tu propio contenido sin flojera, ademas crearias contenido duplicado que podría llegar afectar a ambas paginas en el seo.

Lo mejor, seguir las buenas practicas y crearte tu contenido personal, tus opiniones basadas en tu investigación y así garantizas la independencia de tu sitio y le das tu toque personal, aquellos se matan para mantener la info de su sitio y tu quieres tomarla asi como asi. no no no, mala practica amigo y no recomendada.

Saludos y no es por menos preciar tu trabajo o solicitud de ayuda pero sigue el consejo.
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 25/02/2016, 06:02
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por xfxstudios Ver Mensaje
lo primero si se puede, lo segundo no debes hacerlo, menosprecias el trabajo de los creadores de dicha pagina, salvo que solicites autorizacion de ellos porque hasta donde se es ilegal hacerlo, lo mejor es que crees tu propio contenido sin flojera, ademas crearias contenido duplicado que podría llegar afectar a ambas paginas en el seo.

Lo mejor, seguir las buenas practicas y crearte tu contenido personal, tus opiniones basadas en tu investigación y así garantizas la independencia de tu sitio y le das tu toque personal, aquellos se matan para mantener la info de su sitio y tu quieres tomarla asi como asi. no no no, mala practica amigo y no recomendada.

Saludos y no es por menos preciar tu trabajo o solicitud de ayuda pero sigue el consejo.
Te entiendo, pero imagínate poner más de 5 mil entradas a mano, por ejemplo. Los datos que extraería serían tales como el título, el año, el director, reparto...comunes en muchas otras páginas de la misma temática, nada exclusivo de la misma.
  #4 (permalink)  
Antiguo 25/02/2016, 06:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

La API de IMDB es una opción a considerar...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/02/2016, 06:29
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La [URL="http://www.omdbapi.com"]API de IMDB es[/URL] una opción a considerar...
Le había echado un vistazo y es bastante buena, pero la duda que tengo es como insertar en mi BBDD los datos extraídos en AJAX. En esa parte me pierdo.

Muchas gracias.
  #6 (permalink)  
Antiguo 25/02/2016, 06:43
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

bueno si al caso vamos la data la puedes recibir en json o xml, lo que tienes que hacer es recorrer el xml o el json y por cada nodo hacer el registro, la cosa es que viene todo en inglés amigo
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 25/02/2016, 06:57
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Ejemplo.
Código PHP:
Ver original
  1. $data = file_get_contents("http://www.omdbapi.com/?t=a*&y=&plot=full&r=json");
  2. $products = json_decode($data, true);
  3. $products = array($products);
  4.  
  5. foreach($products as $clave=>$valor){
  6. echo "Titulo: ".$valor['Title']."<br><br>";
  7. echo "Año: ".$valor['Year']."<br><br>";
  8. echo "Rango: ".$valor['Rated']."<br><br>";
  9. echo "Duración: ".$valor['Runtime']."<br><br>";
  10. echo "Género: ".$valor['Genre']."<br><br>";
  11. }
  12. echo "<br><br><hr>";
  13. print_r($products);

esta consulta muestra esto:

Titulo: The Avengers

Año: 2012

Rango: PG-13

Duración: 143 min

Género: Action, Sci-Fi, Thrille
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 25/02/2016, 07:00
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por xfxstudios Ver Mensaje
bueno si al caso vamos la data la puedes recibir en json o xml, lo que tienes que hacer es recorrer el xml o el json y por cada nodo hacer el registro, la cosa es que viene todo en inglés amigo
Sí, lamentablemente como comentas tiene los datos en inglés (no he encontrado ninguna API para filmaffinity), pero más que nada es para saber como hacerlo, no la iba a publicar.

¿Me podrías poner un ejemplo de como se recorrería el JSON y hacer el registro en cada nodo? Utilizo la función $.getJSON de jQuery y no he encontrado nada al respecto.

Un saludo y gracias.
  #9 (permalink)  
Antiguo 25/02/2016, 07:39
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por xfxstudios Ver Mensaje
Ejemplo.
Código PHP:
Ver original
  1. $data = file_get_contents("http://www.omdbapi.com/?t=a*&y=&plot=full&r=json");
  2. $products = json_decode($data, true);
  3. $products = array($products);
  4.  
  5. foreach($products as $clave=>$valor){
  6. echo "Titulo: ".$valor['Title']."<br><br>";
  7. echo "Año: ".$valor['Year']."<br><br>";
  8. echo "Rango: ".$valor['Rated']."<br><br>";
  9. echo "Duración: ".$valor['Runtime']."<br><br>";
  10. echo "Género: ".$valor['Genre']."<br><br>";
  11. }
  12. echo "<br><br><hr>";
  13. print_r($products);

esta consulta muestra esto:

Titulo: The Avengers

Año: 2012

Rango: PG-13

Duración: 143 min

Género: Action, Sci-Fi, Thrille
Perdón, contesté sin haber leído esto. Optaré por utilizar este método en vez de jQuery. Muchas gracias, ya te contaré como ha ido.
  #10 (permalink)  
Antiguo 25/02/2016, 12:40
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Ya lo probe xfxstudios y al introducir, por ejemplo, "The Avengers" me sale el siguiente error



Este es el código:

Cuadro de texto para insertar el título

<body>
<form id="form" action="bbdd.php" method="get">
<label>
<input type="text" id="titulo" name="movie" placeholder="Título" />
</label>
<button type="submit">Buscar</button>
</form>
</body>

El action del formulario

<?php

$titulo=$_GET['movie'];
$data = file_get_contents("http://www.omdbapi.com/?t=" . $titulo . "&r=json");
$movies = json_decode($data, true);
$movies = array($movies);

try{

$base= new PDO('mysql:host=localhost; dbname=pelipedia','root','');

$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Configura el modo de error para que lance excepciones, que se manejan en el catch

$base->exec("SET CHARACTER SET utf8");

foreach($movies as $clave=>$valor){

$sql="INSERT INTO pelis (año, bandera, director, duracion, genero, img, pais, reparto, sinopsis, titulo) VALUES (:an, :ban, :dir, :dur, :gen, :img, :pai, :rep, :sin, :tit)"; // :c_art Marcador

$resultado=$base->prepare($sql); //Da como resultado un objeto PDOStatement

$resultado->execute(array(":an"=>$valor['Year'],":ban"=>"imgs/pais/" . $valor['Country'] . ".png",":dir"=>$valor['Director'],":dur"=>$valor['Runtime'],":gen"=>$valor['Genre'],":img"=>$valor['Poster'],":pai"=>$valor['Country'],":rep"=>$valor['Actors'],":sin"=>$valor['Plot'],":tit"=>$valor['Title']));

}

echo "Registro insertado.";

$resultado->closeCursor();

}catch(Exception $e){

die("Error: " . $e->getMessage() . "<br>Código del error: " . $e->getCode() . "<br>Línea: " . $e->getLine());

}finally{

$base=null;

}

?>

Muchas gracias de anteamno.
  #11 (permalink)  
Antiguo 25/02/2016, 12:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

El mensaje es básico: TE dice que la columna duración no puede ser NULL. Es una violación a la constraint NOT NULL en esa columna.
Lo que tienes que hacer es leer el JSON y validar que los datos obtenidos cumplan con las restricciones de tu base. En aquellos casos donde no pueda ser NULL, pero no tengas el dato, le pones un valor por default.

Aparentemente en este caso el inconvenientes es por que NO ESTÁS OBTENIENDO la respuesta. No asumas que las cosas resultan bien sólo porque las escribas.

VALIDA.

Es simplemente programar...

En ese punto deberías estar verificando que la petición httprequest realmetne funcionó.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 25/02/2016, 12:53
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El mensaje es básico: TE dice que la columna duración no puede ser NULL. Es una violación a la constraint NOT NULL en esa columna.
Lo que tienes que hacer es leer el JSON y validar que los datos obtenidos cumplan con las restricciones de tu base. En aquellos casos donde no pueda ser NULL, pero no tengas el dato, le pones un valor por default.

Aparentemente en este caso el inconvenientes es por que NO ESTÁS OBTENIENDO la respuesta. No asumas que las cosas resultan bien sólo porque las escribas.

VALIDA.

Es simplemente programar...

En ese punto deberías estar verificando que la petición httprequest realmetne funcionó.
Lo acabo de solucionar. No se insertaba bien porque la URL del JSON pone un signo "+" entre los espacios del string recibido. Con un ....

$titulo=$_GET['movie'];
$titulo = str_replace(" ", "+", $titulo);
$data = file_get_contents("http://www.omdbapi.com/?t=" . $titulo . "&r=json");

...va perfecto.

¡Un saludo y gracias por contestar!
  #13 (permalink)  
Antiguo 25/02/2016, 13:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Usar str_replace() no es ĺa mejor solución, lo correcto es usar urlencode() pues el espacio no es el único carácter que te puede dar problemas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 26/02/2016, 07:45
 
Fecha de Ingreso: febrero-2016
Mensajes: 17
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por pateketrueke Ver Mensaje
Usar str_replace() no es ĺa mejor solución, lo correcto es usar urlencode() pues el espacio no es el único carácter que te puede dar problemas.
Pues no conocía esa función, la probaré, pero al insertar titulos en inglés no creo que haya problemas de acentos y demás historias.
  #15 (permalink)  
Antiguo 26/02/2016, 09:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: ¿Es posible insertar directamente datos extraídos de una web en una BBDD p

Cita:
Iniciado por Keysersozer Ver Mensaje
Pues no conocía esa función, la probaré, pero al insertar titulos en inglés no creo que haya problemas de acentos y demás historias.
Bueno, cuando alguien intente escribir un título así como "Bob & Friends" nos cuentas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: bbdd, directamente, posible
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:12.