Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo copiar automáticamente texto de un <div> de una web pública?

27 de noviembre de 2014

Hola, estoy aprendiendo con los manuales y estoy en la parte de Javascript, y sigo repasando el curso porque me olvido algunas cosas y se me mezcla todo con HTML y CSS.

Mi duda es la siguiente: ¿hay alguna forma de que se pueda copiar automáticamente con algún lenguaje el texto o contenido HTML de una web?

Yo a esto lo hago pero manualmente, y las webs de donde lo hago son públicas y además lo copio sólo para mi, porque es información que yo uso y ademas estoy practicando para llegar a entender mejor los lenguajes.

Las paginas con el texto que me gustaría copiar automáticamente son algo así:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
<title>Web</title>
<meta http-equiv=Content-Type content="text/html; charset=utf-8"/>
</head>
<body>
<div id="areadecomentarios" class="scrolling">
<div id="comentario-1" class="comment">
 <div class="comentTime">
  <div class="comentTime">
   <span class="hora">12</span>
   <span class="minutos">31'</span>
  </div>
 </div>
<div class="comentContent">
 <div class="iconoComentario">
  <div class="textocomentario">Luis de San Martin, voto por Gomez</div>
 </div>
 </div>
</div>
 
<div id="comentario-2" class="comment">
 <div class="comentTime">
  <div class="comentTime">
   <span class="hora">13</span>
   <span class="minutos">34'</span>
  </div>
 </div>
<div class="comentContent">
 <div class="iconoComentario">
  <div class="textocomentario">Roberto de San Luis, voto por Paz</div>
  </div>
 </div>
</div>
 
<div id="comentario-3" class="comment">
 <div class="comentTime">
  <div class="comentTime">
   <span class="hora">15</span>
   <span class="minutos">51'</span>
  </div>
 </div>
<div class="comentContent">
 <div class="iconoComentario">
  <div class="textocomentario">Pedro de Mar del Plata, voto por Perez</div>
 </div>
 </div>
</div>
 
</body>
</html>
 
Y para no andar revisando pagina a pagina para ver si hay suficientes comentarios para copiar, quisiera saber si se podría hacer algo con Javascript o algun otro lenguaje para que me copie solo el contenido:
<div id="areadecomentarios" class="scrolling">
<div id="comentario-1" class="comment">
 <div class="comentTime">
  <div class="comentTime">
   <span class="hora">12</span>
   <span class="minutos">31'</span>
  </div>
 </div>
<div class="comentContent">
 <div class="iconoComentario">
  <div class="textocomentario">Luis de San Martin, voto por Gomez</div>
 </div>
 </div>
</div>

Y lo guardé. Así yo no tengo que andar fijándome todos los días si hay como mínimo 100 comentarios nuevos, si hay menos no lo copio, espero hasta que llegue mínimo a 100.

Bueno espero que se haya entendido, gracias.


Respuestas

#1

Si tienes PHP instalado en tu ordenador, puedes abrir una consola de comandos o terminal y ejecutar el siguiente comando para descargar cualquier página:

$ php -r "readfile('http://librosweb.es/foro');" > pagina_guardada.html

Si quieres copiar solamente el contenido de un determinado elemento, puedes utilizar el proyecto Goutte de PHP:

use Goutte\Client;
 
$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony.com/blog/');
$contenido = $crawler->filter('div#id_del_div')->eq(0)->attr('content');

Si te interesa Goutte, lee este artículo sobre cómo usar sus opciones más avanzadas.

Si prefieres un programa automático para descargar webs, puedes utilizar HTTrack

@javiereguiluz

1 diciembre 2014, 21:05
#2

Tengo un Wampserver 2.5, ¿cómo hago para usar la consola PHP?

¿Debo agregarlo a la variable PATH? ¿cómo debo hacerlo, o qué debo escribir? (lo hice con Java, se que hay que poner un ; y un código pero no se cual es)

@Danielduralai

2 diciembre 2014, 4:27
#3

Lo más sencillo que puedes hacer para probar si te funciona es lo siguiente. Abre la consola de comandos de Windows, que puedes buscar como programa desde Inicio o puedes ejecutar directamente pinchando en Ejecutar (dentor de Inicio), escribiendo cmd.exe y pulsando <Enter>.

Después, tienes que entrar en el directorio donde tienes instalado Wamp, que será algo parecido a lo siguiente (no te dijes exactamente en el directorio que te indico, porque en tu caso será ligeramente diferente):

# primero entramos al directorio de Wamp 2.5
c:\> cd c:\wamp\bin\php\php5.5.2
 
# Este comando muestra la versión de PHP instalada en el ordenador
c:\wamp\bin\php\php5.5.2\> php -v
 
# Probando a ejecutar el comando que descarga páginas automáticamente
c:\wamp\bin\php\php5.5.2\> php -r "readfile('http://librosweb.es/foro');" > pagina_guardada.html

Si todo esto funciona, efectivamente lo más cómodo es añadir el directorio de Wamp 2.5 al PATH de Windows, porque esto te permite ejecutar el comando php desde cualquier sitio, sin tener que entrar primero en el directorio de Wamp.

Para ello, pulsa el botón derecho sobre Mi PC y en una de las pestañas, verás un botón que es Variables del sistema. Tienes que pulsar el botón para modificar su valor y añadir la ruta de Wamp como primer contenido, añadiendo al final el carácter ; para separar todo.

Si el PATH original era:

%CommonProgramFiles%\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

Tendrías que poner lo siguiente:

c:\wamp\bin\php\php5.5.2\;%CommonProgramFiles%\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

@javiereguiluz

2 diciembre 2014, 8:43