Foros del Web » Programando para Internet » PHP »

Extraer texto de un foro

Estas en el tema de Extraer texto de un foro en el foro de PHP en Foros del Web. Buenas, estoy desarrollando un pequeño complemento para joomla, lo que pretendo hacer es lo siguiente. De este foro http://eu.battle.net/wow/es/forum/blizztracker/ extraer cada unos de los títulos ...
  #1 (permalink)  
Antiguo 30/08/2015, 17:57
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 7 años, 10 meses
Puntos: 1
Extraer texto de un foro

Buenas, estoy desarrollando un pequeño complemento para joomla, lo que pretendo hacer es lo siguiente.

De este foro http://eu.battle.net/wow/es/forum/blizztracker/ extraer cada unos de los títulos y enlaces que eso ya lo tengo realizado.

Ahora mi problema es que cada mensaje es un resumen del original, lo que deseo es sacar el mensaje completo. Estoy usando el simple_html_dom para extraer los texto, pero no logro sacar el mensaje completo cuando inspecciono la url del mensaje original, por ejemplo:

El primer mensaje es un resumen de unos mucho mas largo, que seria este http://eu.battle.net/wow/es/forum/topic/15161247806#6.

Bien pues quiero que cuando estoy sacando todos los resúmenes de mensajes traer el mensaje original inspeccionado la página de dicho mensaje.

he usado la función de preg_match de php, pero cuando hay puntos, comas o acento especiales parece ser que no encuentra el patron del texto.

Gracias.
  #2 (permalink)  
Antiguo 01/09/2015, 06:11
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 7 años, 10 meses
Puntos: 1
Respuesta: Extraer texto de un foro

Alguien me podría ayudar con este tema, gracias.
  #3 (permalink)  
Antiguo 01/09/2015, 07:36
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 10 años
Puntos: 3
Respuesta: Extraer texto de un foro

Con el mismo Simple DOM Parser HTML, obtienes el link donde está el contenido completo y extraes esa parte, sólo debes crear otro objeto con el enlace, por ejemplo, algo rápido:

Código PHP:
Ver original
  1. //$e es el objeto donde obtienes la primera parte
  2.  
  3. $content = file_get_html($e->href); //suponiendo que hayas buscado un elemento "a" que contengan atributos href

Eso es sólo un empujoncito ;).

Saludos.
  #4 (permalink)  
Antiguo 01/09/2015, 13:07
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 7 años, 10 meses
Puntos: 1
Respuesta: Extraer texto de un foro

Buenas, eso ya lo hago, lo que digo es que tengo que extraer la parte especifica del texto que corresponde al link. Pero no quiero todo si no la parte que coincide con la preview que te muestra anterior mente.
  #5 (permalink)  
Antiguo 05/09/2015, 18:20
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 7 años, 10 meses
Puntos: 1
Respuesta: Extraer texto de un foro

Alguien más puede ayudarme con este problema.
  #6 (permalink)  
Antiguo 05/09/2015, 23:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 10 meses
Puntos: 2534
Respuesta: Extraer texto de un foro

¿Cuantas habilidades tendrás al respecto de análisis y extracción simple de texto?

Porque así como respondes al tema parece ser que quieres que alguien haga todo el trabajo por ti.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/09/2015, 05:18
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 7 años, 10 meses
Puntos: 1
Respuesta: Extraer texto de un foro

No quiero que me lo hagan es solo que no consigo sacar esa parte en especifico. Solo quiero que me orienten a saber como extraer esa parte en especifico.
  #8 (permalink)  
Antiguo 06/09/2015, 06:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 3 meses
Puntos: 2654
Respuesta: Extraer texto de un foro

Pues postea todo el código relevante.
No vamos a andar en adivinanzas ni usando telepatía. Si no lo vemos, no te podemos ayudar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 09/09/2015, 10:59
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 7 años, 10 meses
Puntos: 1
Respuesta: Extraer texto de un foro

Este es el código

Código PHP:
public function blueExtract ($reg$lang)
    {    
        for(
$i=0;$i<60;$i++){
        
$html file_get_html("http://".$reg.".battle.net/wow/".$lang."/forum/blizztracker/?page=".$i);
        if(!empty(
$html)){
        
$region $reg;
        
$idioma $lang;
        
$mensaje "";
        
$url "";
        
$autor "";
        
$fecha "";
        
$foro = array();
        
$db =& JFactory::getDBO();
            foreach(
$html->find('tr') as $element) {
    foreach(
$element->find('.content') as $find) {
        
$mensaje $find->plaintext;
        
$mensaje utf8_encode($mensaje);
        
$mensaje utf8_decode($mensaje);
            foreach(
$find->find('a') as $find) {
            
$url "http://eu.battle.net".$find->href;
            }
    }
    foreach(
$element->find('.desc') as $find) {
        
$foro explode("-"$find->plaintext);
    } 
    foreach(
$element->find('.author-wrapper') as $find) {
        
$autor $find->plaintext;
    } 
    foreach(
$element->find('.last-post-time') as $find) {
        
$fecha $find->plaintext;
    }     
        if(
$mensaje != "" && $url != "" && $autor != "" && $fecha != ""){
            
$db =& JFactory::getDBO();
        
$query $db->getQuery(true);
        
$query 'SELECT fecha FROM #__bluetracker where fecha = "'.$fecha.'"';  
        
$db->setQuery($query);  
        
$Bluedb $db->loadResult();  
          
            if(
$Bluedb != $fecha){
                
$query "INSERT INTO #__bluetracker (mensaje_blue, titulo_blue, region, idioma, url, autor, fecha) VALUES ('".$mensaje."', '".$foro[1]."', '".$region."', '".$idioma."', '".$url."', '".$autor."', '".$fecha."')";
                
$db->setQuery($query);
                
$db->query();
    
                    }
                }
            }    
        }else{
$i=60;}
    }
}
    
    public function 
getContent($params$params2)
    {
        
$this->blueExtract($params$params2);
        
$db =& JFactory::getDBO();
        
$query $db->getQuery(true);
        
$query 'SELECT * FROM #__bluetracker where region = "'.$params.'" and idioma = "'.$params2.'"';  
        
$db->setQuery($query);  
        
$Bluedb $db->loadAssocList();  
          echo 
"<table border='0'>";
        foreach(
$Bluedb as $items){
            echo 
"<tr>
            <td><a href='"
.JURI::current()."?post=".$items["id_bluetracker"]."'>".$items["titulo_blue"]." - Por ".$items["autor"]."</a></td>
            </tr>"
;
        }
        echo 
"</table>";
    }
    
    public function 
getPostContent($url$mensaje){
        
        
$htmlPost file_get_html($url); 
                foreach(
$htmlPost->find('.topic-post') as $element) {
            
            foreach(
$element->find(".post-detail") as $find){
                
$texto utf8_encode($find);
                
$texto utf8_decode($texto);
                if (
preg_match("/".substr($mensaje0200)."/i"$texto)) 
                    {
                
$query "INSERT INTO #__post_blue (texto_post_blue, id_bluetracker) VALUES ('".$texto."', '".$url."')";
                
$db->setQuery($query);
                
$db->query();
                    }
                            }
                        }
        }
    public function 
getText($id){
        
        
$db =& JFactory::getDBO();
        
$query $db->getQuery(true);
        
$query 'SELECT * FROM #__bluetracker where id_bluetracker = "'.$id.'"';  
        
$db->setQuery($query);  
        
$Bluedb $db->loadAssocList();  
      
        foreach(
$Bluedb as $items){
                
            
//$this->getPostContent($items["url"],$items["mensaje_blue"]);
            
echo '<p> Escrito por: '.$items["autor"].' con fecha de '$items["fecha"];
            echo 
'<p>'.$items["mensaje_blue"].'</p>';
        }        
    } 

El primer metodo blueExtract, saca los enlaces y la información básica que proporciona la primera url que muestra una lista de los posts del foro.

El metodo getPostContent, es el que intento mediante la url de cada uno que acabo de extraer buscar el mensaje completo. Aquí esta el problema.

Etiquetas: foro, html
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:48.