[Java] Parsing pagina web

di il
16 risposte

[Java] Parsing pagina web

Buongiorno,
per la mia tesi di laurea sto replicando e migliorando lo sviluppo del tool "Bussola della Trasparenza", che dovrebbe analizzare i siti delle PA italiane e verificarne i contenuti in base al dgls 33/2013. Il tool, nonostante sia stato premiato a livello europeo, verifica solo l'effettiva esistenza di determinate sezioni stabilite per legge, non il contenuto (quindi tutte le sezioni possono essere vuote e per il tool è tutto ok).

All'interno della pagina devo quindi stabilire se:
- sono presenti documenti in vari formati;
- la pagina in realtà è vuota;
- sono presenti link ad altre pagine.

Il mio problema è proprio nell'ultimo punto: attraverso la libreria jsoup seleziono dalla pagina tutti i "div" che al loro interno hanno dei "p" o dei "li". Così facendo però vengono rilevati anche altri link, come ad esempio quelli dei menù, ecc.

Qualcuno ha un'idea su come analizzare solo il div che mi interessa? L'id o comunque il tag "name" dei div non è fisso, varia da sito a sito e considerate che i siti delle PA italiane sono più di 10000.

Grazie per le future risposte!

16 Risposte

  • Re: [Java] Parsing pagina web

    Ciao,
    in bocca al lupo per la tua laurea

    Puoi usare il metodo :
    getElementsContainingOwnText(String text) della classe Element di JSoup che ti ritorna un "Elements".
    Io l'ho già usata una volta e funziona bene.
    Come parametro potresti mettere "http://" così vai prendere il link che ti interessa.

    Ciao.
  • Re: [Java] Parsing pagina web

    Ciao e grazie! Forse non sono stato chiaro... mi spiego meglio con uno screen del sito dell'università di Firenze, ad esempio.



    Io dovrei rilevare la presenza in modo automatico (senza quindi passare un url specifico, io inserisco l'url della home del sito e lui fa tutto) di quei quattro link a centro pagina, non anche di altri!
  • Re: [Java] Parsing pagina web

    Beh difficile ottenere quanto dici.
    La JSoup lavora con tag e/o con quello che contengono.
    Se non hai queste informazioni o sono diverse sito per sito, non è difficile, è praticamente impossibile ottenere quanto chiedi.
    Io pensavo che magari tutti i link esterni avessero un testo del tipo http://..etcetc quindi parliamo di un link assoluto, mentre i link che si riferivano allo stesso sito avessero un link di tipo relativo.

    Ciao.
  • Re: [Java] Parsing pagina web

    In realtà su siti sviluppati con criterio, il testo centrale e solo quello è contenuto in un tag "div" con "p" annidato, e viene rilevato soltanto ciò che voglio. Altri però hanno ben pensato di mettere "p" anche nei menù... da qui nasce il problema!

    Se soltanto il prof rispondesse... grazie lo stesso!
  • Re: [Java] Parsing pagina web

    Non ho mai visto un prof che risponde il 25 agosto...
    Quindi fammi capire.
    hai una struttura del tipo:
    
    
    <div>
       <p>
          //link non utili
       </p>
    </div>
    ....
    ....
    <div>
       <p>
         //link utili
      </p>
    </div>
    
    Beh se è così sarebbe complicato pescare le info...
    dovresti trovare qualcosa che le "accomuna" e che restano tutti in quel div.
    ciao
  • Re: [Java] Parsing pagina web

    Esattamente così. Ripeto, se il parsing dovesse essere eseguito su un solo sito potrei anche trovare dei rimedi... ma uniformarlo a più di 10000 è oggettivamente impossibile. Se soltanto le legge prevedesse l'uso di uno stesso nome per i div in questione così come fa per le sezioni...
  • Re: [Java] Parsing pagina web

    Bhe peró potresti tenere in effetti in considerazione il fatto che i menu hanno anche tag li
  • Re: [Java] Parsing pagina web

    Alcuni siti lo implementano con li, altri no... è difficile uniformare o quasi impossibile
  • Re: [Java] Parsing pagina web

    Dovresti raggruppare una serie di criteri in una funzione che per ogni sito controlla quei criteri e restituisce un valore numerico...che è la somma dei criteri positivi...se questo è maggiore ad un valore allora quello è contenuto utile
    spero di essere stato chiato
  • Re: [Java] Parsing pagina web

    Si, ma non saprei quali criteri adottare...
  • Re: [Java] Parsing pagina web

    Vedi diversi siti...analizzane una ventina e vedrai che piccoli particolari si possono trovare...
  • Re: [Java] Parsing pagina web

    Un pò quello che ti avevo detto prima
    trovare un criterio che "accomuna" le info stanno in quel div.
    fai un pò come ti ha detto ByProgrammer, stare nella speranza che il professore risponda o che possa far qualcosa non funziona quasi mai.
  • Re: [Java] Parsing pagina web

    L'ideale sarebbe analizzare (o comunque selezionare) i div più larghi/alti di x pixel. Che voi sappiate con jsoup si può fare, senza avere la proprietà width/height nel codice o i relativi css?
  • Re: [Java] Parsing pagina web

    Beh credo proprio di no...se non hai le proprietà width/height e/o non hai il css come fa il programma a determinarsi le larghezze/altezze in generale?
Devi accedere o registrarti per scrivere nel forum
16 risposte