• Super User

    Io propenderei per il primo metodo, te la salvi e quando vai a leggerla la confronti con quella in locale. Per l'ora non ci farei affidamento.


  • User Attivo

    mmm, non male, io a dire il vero quando parso la pagina, salvo i risultati dei tag trovati, ad es:

    • se voglio controllare una pagina che contiene una classifica, mi parso il tag <li> (o quello che contiene l'indice, in genere <li>).
    • se l'oggetto mi trova 10 tag, io me li salvo in un db con nome della pagina, e numero tag
    • il problema sta nel fatto, che 10 posizioni contengono 10 tag li, e quindi ogni volta che la pagina cambia, non cambiano i tags, ma quello che ci sta di dentro.

    Tu mi hai detto di salvare la pagina, e controllare la sua differenza, potresti per cortesia farmi un esempio??? Credo che il tuo metodo è molto più efficace del mio.


  • Super User

    Io salverei tutta la pagina, o salvi la pagina in un db (in un campo abbastanza grande da contenerla) oppure salvi il file nel server e nel db solo un riferimento alla pagina (path, data, ecc).


  • User Attivo

    ok, allora facciamo così:

    fase memo pagina:

    • con uno script asp, mi salvo la pagina in una cartella del mio server, e metto nel mio db il percorso alla pagina salvata, e un campo col percorso reale della pagina.

    fase controllo pagina:

    • controllo la pagina salvata sul mio server (come devo fare?)
    • controllo la pagina reale (come devo fare?)
    • registro le differenze (questo è facile :D, le posso salvare in un db)

    come devo fare per i punti 2.1 e 2.2 ???

    Grazie per il tuo aiuto


  • Super User

    scusa, se hai salvato la pagina in locale, utilizzi lo stesso script per prendere la pagina in locale e quella remota forse aggiornata, le metti in una stringa, se sono uguali bene, altrimenti sono cambiate. Se vuoi fare cose più complicate, come capire dove è cambiata ecc, devi fare un parsing, ad esempio title description e body e vedere cosa è cambiato.


  • User Attivo

    Scusami Cali per il ritardo,
    io a dire il vero faccio proprio il parsing con l'oggetto xmlhttp, ma parso solo la pagina remota, e non ho la certezza di sapere dove cambiano le cose.

    Se vuoi posso postarti il mio script.


  • Super User

    Se non sai dove cambiano le cose ma non fai un parsing preciso, basta che salvi la pagina come ti dicevo prima. Mi sembra il modo più facile per sapere quando cambia la pagina.


  • User Attivo

    Se non sai dove cambiano le cose ma non fai un parsing preciso, basta che salvi la pagina come ti dicevo prima. Mi sembra il modo più facile per sapere quando cambia la pagina.

    in questo modo però dovrei confrontarle di persona, invece se volessi monitorare i cambiamenti delle classifiche di 10 pagine, mi ci vorrebbe un bel pò di tempo...

    so che cambia il contenuto del tag (<table o <span o <li ).
    potrebbe esistere un metodo per memorizzare il contenuto di un determinato tag??
    es.
    <table>
    <tr><td><table><tr><td>memorizza questo testo</td></tr></table ecc....

    memorizzo ciò che ci sta in td, della seconda tabella, ma non della prima

    :ciauz:


  • Super User

    Certo che esiste, basta che fai il parsing html della pagina, ma devi nache sapere che lapagina non cambia, Ad esempio, uno potrebbe sostituire un table con li, e a qual punto il tuo parsing non avrebbe più senso,. Se sai che la struttura non cambia ma cambiano solo i contenuti dei tag, allora li parsi e vedi cosa è cambiato di volta in volta.


  • User Attivo

    Questo è il codice che parsa la pagina,

    
    StrURL = "pagina1.asp/"
    strPatt = "<span"
    
    Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
    
        objXMLHTTP.Open "GET", StrURL, false
    
          ' Richiama il file
          objXMLHTTP.Send
    
        ' il contenuto
        content = CStr(objXMLHTTP.ResponseText)
        statuscode = objXMLHTTP.Status
    
        Set objxml = Nothing
    
        if CInt(statuscode) = 200 then
    
            // codice di controllo pagina
            strng = content
            Dim objRegExpr
              Set objRegExpr = New RegExp
              objRegExpr.Pattern = strPatt
              objRegExpr.IgnoreCase = TRUE
              objRegExpr.Global = TRUE
              Dim colMatches
              Set colMatches = objRegExpr.Execute(strng)
              QuantitaSegno = colMatches.Count
            if QuantitaSegno <> quant then
    
            Response.write ("attenzione! la pagina ha subito cambiamenti")
    
            end if
            'fine codice controllo pagina
    
        else
        
        if statuscode = 404 then 
            Response.Write("Pagina Inesistente")
        else 
            Response.Write(statuscode)
        end if 
     
        end if
        
    ```questo script parsa una pagina che contiene una classifica di musica, ma trova solo quante occorrenze del tag <span> , e non quello che vi è contenuto dentro, dopo averle trovate, le registra in un db, con il valore quant.
    quindi "quant" sono le occorrenze vecchie, se le occorrenze vecchie differiscono da quelle nuove vuol dire che è stato aggiunto un tag <span * , purtroppo è un'ottimo parser per carpire se la STRUTTURA della pagina è stata cambiata come hai detto tu, ma non il contenuto del tag span...
    
    accetto qualsiasi tipo di suggerimento (o apporto modifica al codice).
    
    Grazie, ciao.

  • Super User

    Puoi usare sempre una expressione regolare che ti prenda il contenuto dei tag span e salvi quello oltre al numero


  • User Attivo

    come faccio io rilevo solo la presenza del tag,...
    ...ma come potrei fare per prendere il contenuto dentro al tag?


  • Super User

    I modi sono molteplici, potresti ad esempio cercare <span> e </soan> e prendere quello che c'è in mezzo


  • User Attivo

    potresti farmi un esempio pls???


  • Super User

    Non vorrei scrivere cavolate, quindi controlla bene il codice, ma con "<soan>([^>]*)</span>" dovresti prendere il testo tra i tag span. Poi con

    For Each Item in Matches
    Response.Write Item.Value
    Next

    Prendi quello che c'è dentro