Autor Tema: Copiar una página web con PHP file_get_contents código fuente ejemplo CU00838B  (Leído 6851 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes. Propongo una posible solución de los ejercicios de la entrega CU00838B del curso PHP desde cero.

Citar
EJERCICIO

Crea un fichero que lleve por nombre miArchivoDePrueba.txt e introduce en él el siguiente texto:

Una base de datos es un sistema informático a modo de almacén.

En este almacén se guardan grandes volúmenes de información.

Por ejemplo, imaginemos que somos una compañía telefónica y deseamos tener almacenados los datos personales y los números de teléfono de todos nuestros clientes, que posiblemente sean millones de personas.

A continuación crea un archivo denominado ejemplo2.php donde usando la funciónfile_get_contents recuperes en una variable el texto que se encuentra en ese fichero y lo muestres en el navegador.

Código: [Seleccionar]
<?php 

$texto fopen("miArchivoDePrueba.txt""w");
fwrite($texto" Una base de datos es un sistema informático a modo de almacén.

 

En este almacén se guardan grandes volúmenes de información.

 

Por ejemplo, imaginemos que somos una compañía telefónica y deseamos tener almacenados los datos personales y los números de teléfono de todos nuestros clientes, que posiblemente sean millones de personas."
);
fclose($texto);

$texto file_get_contents("miArchivoDePrueba.txt");
$texto nl2br($texto);
echo $texto;

?>

Quería aclarar, que antes de mostrar el contenido del archivo "miArchivoDePrueba.txt" mediante la función "file_get_contents()" lo he creado automáticamente en el mismo código. Así evito la molestia de subir el archivo "miArchivoDePrueba.txt" y luego el que lo corrija que lo tenga que subir en el servidor manualmente para su mostración posterior con la función "file_get_contents()".

Citar
EJERCICIO 2

Recupera el código fuente de tres páginas web diferentes y usando las funciones para cadenas de php muestra por pantalla cuántas veces aparece la etiqueta <h1> en cada una de ellas. Ejemplo de resultado a obtener: La etiqueta h1 aparece 34 veces en aprenderaprogramar.com. La etiqueta h1 aparece 45 veces en elmercurio.cl. La etiqueta h1 aparece 88 veces en clarin.com

Código: [Seleccionar]
<?php 

$texto file_get_contents("http://aprenderaprogramar.com");

function buscarCadenaDeTexto($texto,$html){
$cadena1 $texto;
$cadena2 "<h2";
echo "La etiqueta h2 aparece: ".substr_count($cadena1$cadena2)." veces en ".$html."<br><br>";
}

buscarCadenaDeTexto($texto,"aprenderaprogramar.com");

$texto file_get_contents("http://elmercurio.cl");

buscarCadenaDeTexto($texto"elcomercio");

$texto file_get_contents("http://clarin.com");

buscarCadenaDeTexto($texto"clarin.com");

?>

He buscado la etiqueta "<h2", porque  la página de aprenderaprogramar.com no dispone de ninguna etiqueta "<h1". Supongo que es por cuestiones de facilitar la búsqueda por motores como "google", "bing", etc.

También quería comentar una cuestión que me tuvo toda la tarde ocupado y no la pude resolver. Cuando hago ejecución del código:

Código: [Seleccionar]
$file = file_get_contents("https://www.aprenderaprogramar.com");
echo $file;


no hay manera de que los navegadores me lo visualicen como un archivo de texto y que se vea de esta forma:



Siempre lo lee como si fuera una página normal hecha en archivo con extensión .html, aunque haya guardado el archivo con extensión .txt.

Es decir, aunque ejecute el código así:

Código: [Seleccionar]
$file = file_get_contents("https://www.aprenderaprogramar.com");
$archivo = fopen("texto.txt", "w");
fwrite($archivo, $file);
fclose($archivo);
echo $archivo;

igualmente me lo muestra como una página web normal y no como un archivo de texto.
No sé si es por cuestiones de configuración del navegador o por el simple hecho que el intérpreta del navegador intenga, a toda costa, mostrar el contendido del archivo como una página web al detectar las etiquetas correspondientes (<html>,<head>,<body>, etc.)

Lo he probado en dos navegadores: firefox, chrome, y el resultado siempre ha sido el mismo.

Gracias.
« Última modificación: 15 de Mayo 2016, 21:54 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00838B Extraer código fuente de página web con PHP
« Respuesta #1 en: 13 de Mayo 2016, 23:34 »
Buenas dimiste.

Ejercicio 1 correcto.

Ejercicio 2 también, todo correcto.

En cuanto a tu duda, tu mismo te has respondido, el navegador interpreta lo que lee, en este caso lee código html.
Puedes probar esto:

Código: [Seleccionar]
<?php 

$texto1 file_get_contents("http://aprenderaprogramar.com");

function buscarCadenaDeTexto($texto,$html){
$cadena1 $texto;
$cadena2 "<h2";
echo "La etiqueta h2 aparece: ".substr_count($cadena1$cadena2)." veces en ".$html."<br><br>";
}

buscarCadenaDeTexto($texto1,"aprenderaprogramar.com");

$archivo fopen("texto.txt""w");
fwrite($archivo$texto1);
fclose($archivo);
echo "<h2>El código recuperado desde aprenderaprogramar.com es el siguiente:</h2><div style='border: solid 2px black'>";
echo highlight_file("texto.txt");
echo "</div>"

?>

Saludos.  ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU00838B Extraer código fuente de página web con PHP
« Respuesta #2 en: 14 de Mayo 2016, 20:38 »
Buenas, Pedro.

Gracias por corregir el ejercicio.

Sí, del modo que me mostraste funciona :)

Saludos :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".