Foros del Web » Programando para Internet » Javascript »

Extraer parrafos del body con split

Estas en el tema de Extraer parrafos del body con split en el foro de Javascript en Foros del Web. Saludos, Quisiera saber si alguien podria ayudarme con un problema que tengo. Extraigo el body de mi pagina con JavaScript y luego quiero capturar SÓLO ...
  #1 (permalink)  
Antiguo 01/12/2011, 09:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Extraer parrafos del body con split

Saludos,

Quisiera saber si alguien podria ayudarme con un problema que tengo. Extraigo el body de mi pagina con JavaScript y luego quiero capturar SÓLO los parrafos <p>texto texto texto</p>.

Es decir capturo esto:

<div>blablabla</div>

<p>texto texto texto1</p>.

<p>texto texto texto2</p>.

<p>texto texto texto3</p>.

Y quiero guardar en una variable esto:

var Parrafos = array(parrafo1 => texto texto texto 1, parrafo2 => texto texto texto 2, parrafo3 => texto texto texto 3)


Estoy provando con esto:

Código Javascript:
Ver original
  1. <script  type="text/javascript">
  2.  
  3.     var str = "<p>I am confused asasas asasasa</p><p>I am confused asasas asasasa</p><p>I am confused asasas asasasa</p><p>I am confused asasas asasasa</p><p>I am confused asasas asasasa</p>";
  4.    
  5.     var frags = str.split(/<p>(.{10,300})<\/p>/);
  6.    
  7.     alert(frags);
  8.  
  9. </script>

Pero no me sirve.
  #2 (permalink)  
Antiguo 01/12/2011, 10:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Extraer parrafos del body con split

La cosa seria hacer esto:


Código PHP:
$contenido file_get_contents($url_sitio);
$regexp "<p>(.{10,300})<\/p>";
if(
preg_match_all("/$regexp/siU"$contenido$parrafosPREG_SET_ORDER)) { 
  foreach(
$parrafos as $parrafo) {
     
$parrafo $parrafo[0];
     
// Acá haz lo que quieras con el párrafo
  
}


En JavaScript.

Muchas gracias! =)
  #3 (permalink)  
Antiguo 01/12/2011, 10:52
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Extraer parrafos del body con split

buenas,
estas haciendo un split. si eres experimentado con las expresiones regulares, sabras que en split la función toma el patrón como la posición donde debe cortar en el string. el resultado es un array de string sin incluir la porción por donde se dividio. en resumen, estas utilizando el método incorrecto. debes usar el método match de los string y como argumento el patrón. string.match(pattern). dado que javascript contiene una sola función match para realizar pareos múltiples o individuales, debes asignar el flag global al patrón en caso de realizar pareos múltiples.

en todo caso, me pregunto si no te sería más fácil buscar todos los elementos P a nivel de DOM. dependiendo el propósito, creo que es mucho más corto y cómodo. solo debes usar el método getElementsByTagName indicando como argumento el nombre de la etiqueta a capturar. document.getElementsByTagName('p');

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 01/12/2011, 11:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Extraer parrafos del body con split

Gracias =)

Entonces estoy tratando de hacerlo como me dijistes:

Código Javascript:
Ver original
  1. var p = document.getElementsByTagName("p").item(0).innerHTML;

Pero no se como hacerlo para todos los <p> Solo me coge el primero item(0) como hago para que los coja todos?

Gracias.
  #5 (permalink)  
Antiguo 01/12/2011, 11:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Extraer parrafos del body con split

Perdon me corrigo:


La mejor opcion es para mi creo string.match(patron)

Código Javascript:
Ver original
  1. var frags = bodyTAG.match(/<p>(.{20,300})<\/p>/g);
  2.  
  3. console.log(frags);

En principio esto tendria que devolverme los parrafos entre 20 y 300 caracteres pero no lo hace hay alguna cosa mal en la expresion regular?

Gracias.

Saludos
  #6 (permalink)  
Antiguo 01/12/2011, 11:45
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Extraer parrafos del body con split

en teoría, la validez de un patrón depende de las circunstancias. por ejemplo, ¿has considerador si los elementos tienen atributos? ¿o si existen caracteres que la clase ANY (.) no puede capturar? por ejemplo, el punto no puede capturar caracteres tipo line-termination como lo son los saltos de línea.

respecto a getElementsByTagName, dicho método devuelve una colección de elementos el cuál puedes recorrerlo con un bucle -en tu caso- para extraer el contenido en una variable. lo único que no estará limitado a 20-300 caracteres. si dicho factor es un requisito, en el mismo bucle puedes determinar si agregar o no el contenido de acuerdo a su longitud.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 01/12/2011, 12:02
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Extraer parrafos del body con split

Ahà, entiendo prové para hacerlo a traves de la DOM y me luego prove de hacer el bucle pero no me salio muy bien que digamos:


Código Javascript:
Ver original
  1. var p = getElementsByTagName("p")item(0).innerHTML();
  2.  
  3. for(var i = 0; i < p.length;++i) {
  4.  
  5.     //Aqui de algun modo en donde pone item(0) tendria que ser item(n-1) supongo pero no se    como.
  6.  
  7. }

Muchissimas gracias de antemano =)
  #8 (permalink)  
Antiguo 01/12/2011, 12:07
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Extraer parrafos del body con split

sucede que estas usando directamente la colección devuelta por el método getElementsByTagName, seguido tienes el método item y la propiedad innerHTML. por tanto, lo que guardas en la variable p no es la colección, sino el contenido del primer elemento de la colección. primero debes almacenar la colección en la variable y luego iterar dicha variable.
Código:
// variable len - un numero que indica cuantos elementos P existen;
// variable content - donde iras almacenando el contenido extraido del elemento;
var p = document.getElementsByTagName("p"), content = "";
for(var i = 0, len = p.length; i < len; i++){
// resto del codigo;
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 01/12/2011, 12:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Extraer parrafos del body con split

Wooo gracias, estoy provando =)

en donde pone resto del codigo imagino que es en donde pongo los elementos dentro del content verdad?

Saludos!

Etiquetas: body, parrafos, split
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 23:55.