Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Problemi di parsing HTML

    Salve a tutti, vorrei presentarvi un problema un po' particolare...
    sto scrivendo uno script che prenda in input delle pagine HTML contenenti degli annunci e salvi le caratteristiche di ogni annuncio (titolo, prezzo ecc...).
    Se la pagina è una tutto OK, quando comincio però ad aumentare il numero delle pagine lo script "si perde" tutte le pagine tranne l'ultima...
    ho pensato potesse essere un problema di tempi (magari non sta dietro a salvare i contenuti di 70/80 pagine)...quindi ho inserito uno sleep di un secondo tra una pagina e l'altra ma ancora nulla

    Qualcuno saprebbe indicarmi quale potrebbe essere il problema?


    Grazie mille a tutti in anticipo!

  2. #2
    Aspetta un attimino che spolvero la sfera di cristallo.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Mi scuso se le informazioni che ho dato sono insufficienti, ma il codice è abbastanza lungo è incasinato per essere postato.

  4. #4
    Secondo me cicli sulle pagine ma salvi i contenuti sempre sulle stesse variabili per cui è ovvio che alla fine ti restano solamente i valori dell'ultima pagina.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    In teoria salvo ogni contenuto in un array e poi, nel momento della stampa, faccio passare tutti i valori dell'array...

    comunque vi posto il codice della classe principale, quello che parsa i contenuti...

    Codice PHP:
    <?php
    set_time_limit
    (180);
    include_once(
    "simple_html_dom.php");
    include_once(
    "class.elem.php");

    class 
    EbayAnnounceParser {
        
        
    //Environment's variables
        
    public $html;
        public 
    $page;
        public 
    $url;
        public 
    $string_search;
        public 
    $price_min;
        public 
    $price_max;
        
        public 
    $element;
        
        
        function 
    __construct() {
            
    $this->html = new simple_html_dom();
            
    $this->element = new Elem();
            
    $this->url "http://annunci.ebay.it";
            
    $this->price_min "60";
            
    $this->price_max "110";
        }
        
        
    //Load research on memory and inside "element" array
        
    public function Load($string_search) {
            
    $strsrc $this->url."/".urlencode($string_search)."/";
            
    $this->string_search $string_search;
            
    $page $this->html->load_file($strsrc);
            
    $number_of_pages round(($this->getNumberOfResults_int())/30);
            
    $this->LoadImageOnElement();
            
    $this->LoadTitleOnElement();
            
    $this->LoadDescriptionOnElement();
            
    $this->LoadPriceOnElement();
            
    $this->LoadLocationOnElement();
            
    $this->LoadDateOnElement();
            
            for(
    $i 1;$i<$number_of_pages;$i++) {
            
    $strsrc $this->url."/".urlencode($string_search)."/?p=".$i;
            
    $this->html->load_file($strsrc);
            
    $this->LoadImageOnElement();
            
    $this->LoadTitleOnElement();
            
    $this->LoadDescriptionOnElement();
            
    $this->LoadPriceOnElement();
            
    $this->LoadLocationOnElement();
            
    $this->LoadDateOnElement();
            
    sleep(1);
            }
            
        }
        
        public function 
    LoadImageOnElement() {
            
    $images $this->html->find("img");
            
    $cont 0;
            foreach(
    $images as $key => $value) {
                
    //$cont = $this->html->src;
                
    if($cont>=&& $cont<=32)
                
    $this->element->IMAGE[] = $value;
                
                
    $cont++;
            }
            return;
        }
        
        public function 
    LoadTitleOnElement() {
            
    $titles $this->html->find("h2.postTitle");
            foreach(
    $titles as $key => $value) {
                
    $this->element->TITLE[] = $value;
            }
            return;
        }
        
        public function 
    LoadDescriptionOnElement() {
            
    $descriptions $this->html->find("div.searchResultDescriptionList");
            foreach(
    $descriptions as $key => $value) {
                
    $this->element->DESCRIPTION[] = $value;
            }
            return;
        }
        
        public function 
    LoadPriceOnElement() {
            
    $prices $this->html->find("div.[class=searchResultPriceList column grid_1]");
            
    $price = Array();
            foreach(
    $prices as $key => $value) {
                
    //preg_match('/[0-9]+/', $value, $price);
                
    $this->element->PRICE[] = $value;
                unset(
    $price);
            }
            return;
        }
        
        public function 
    LoadLocationOnElement() {
            
    $locations $this->html->find("div.[class=searchResultLocationList column grid_2img]");
            foreach(
    $locations as $key => $value) {
                
    $this->element->LOCATION[] = $value;
            }
            return;
        }
        
        public function 
    LoadDateOnElement() {
            
    $date $this->html->find("div.[class=searchResultDateList column grid_1]");
            foreach(
    $date as $key => $value) {
                
    $this->element->DATE[] = $value;
            }
            return;
        }
        
        public function 
    ParseAnnounce () {
            
    $div $this->html->find("div.[class=searchResultListItem row]");
            foreach(
    $div as $key => $value) {
                
            }
            return;
        }
        
        
        
    //Get the number of results of a search string given by user
        
    public function getNumberOfResults() { 
            
    $element_numbers $this->html->find("span.count");
            return 
    trim($element_numbers[0]->innertext);
        }
        
        public function 
    getNumberOfResults_int() { 
            
    $element_numbers $this->html->find("span.count");
            
    $num trim($element_numbers[0]->innertext);
            return 
    str_replace("."""$num);
        }
    }

    ?>

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    mi sa tanto da web spider ... sei sicuro che ti sia consentito fare cio'?

    Da dove pigli i dati? I dati sono sotto copyuright ?
    Sistemi di datamining ... beh vanno gestiti con occulatezza soprattutto sotto l'aspetto legale.

  7. #7
    Originariamente inviato da Virus_101
    mi sa tanto da web spider ... sei sicuro che ti sia consentito fare cio'?

    Da dove pigli i dati? I dati sono sotto copyuright ?
    Sistemi di datamining ... beh vanno gestiti con occulatezza soprattutto sotto l'aspetto legale.
    Oh in realtà è solo uno script personale...mi serve per fare quello che Ebay Annunci non mi permette di fare, cioè poter restringere le ricerche ad esempio in base ad un prezzo massimo ecc...
    non so se sia illegale ma penso di no

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Capisco le tue necessità ma ti consiglio anche di guardare bene le policies di ebay, quelle famose EULA che trovi sul sito li ti dicono cosa puoi e non puoi fare.

    Ad esempio se il materiale di un sito e' sotto copyright non puoi scaricarlo e riutilizzarlo come tuo, devi chiedere il permesso per farlo.

  9. #9
    Uuuups forse hai ragione

    lo script è solo per uso personale comunque (mi scoccia dovermi scorrere tutte le volte tonnellate di pagine per trovare quello che voglio) quindi credo che proseguirò da solo se non vi è possibile aiutarmi

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Lool no beh tranuqilloo se e' per "uso personale" non e' un problema e' come dire mi ritaglio gli articoli del giornale per tenere solo quelli che mi interessano ... non e' vietata come cosa .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.