Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Parsing pagina html

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    82

    Parsing pagina html

    salve a tutti, dovrei estrapolare dei dati da mettere in un db da alcune pagine html, ho scelto perl su consiglio di un mio amico ma non so dove mettere le mani, quindi se ci sono metodi anche in Java sono ben accetti.

    La pagina principale è un elenco con relativi collegamenti, esempio:
    ......
    primo elemento</font>[/b]</td>
    </tr>
    <tr valign='Top'><td><font size='2' color='#ff0000' face='Verdana'>
    secondo elemento</font>[/b]</td>
    </tr>
    .......

    io devo prendere solo "primo elemento" , "secondo elemento",....

    poi di "primo elemento" e anche degli altri devo andare al collegamento href, che sarà un altra pagina html dove vi è una tabella con gli attributi dell'elemento.

    "primo elemento" prima pagina html
    "attributi primo elemento" seconda pagina html

    è possibile quindi avere alla fine un elenco ordinato di elementi con i lori rispettivi attributi?

  2. #2
    Se conosci Java perché complicarti la vita usando un linguaggio che non conosci? In ogni caso, ciò di cui hai bisogno è un parser HTML; molti in Java usano TagSoup (parser SAX) o jsoup (parser DOM più altre features, forse più comodo per i tuoi fini), dato che sono in grado di gestire più o meno correttamente le tonnellate di HTML "malscritto" che si trova nel "mondo vero" del web.

    Se mi confermi che vuoi proseguire in Java ti sposto nell'apposita sezione, altrimenti dimmi che linguaggio vuoi usare che lo aggiungo al titolo come tag (come da regolamento).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    82
    java è perfetto, io avevo trovato questo ma non capisco come funziona...

    http://www.bigthink.it/java-parsing-di-una-pagina-html/

  4. #4
    Originariamente inviato da LaFleur
    java è perfetto, io avevo trovato questo ma non capisco come funziona...

    http://www.bigthink.it/java-parsing-di-una-pagina-html/
    Cosa non capisci? La sintassi XPath? In ogni caso non sei obbligato ad usarla, puoi tranquillamente "navigare" nell'albero DOM dell'oggetto Document come si farebbe ad esempio da JavaScript...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    L'esempio che hai postato direi che è abbastanza completo, utilizza JTidy per ripulire la pagina da caratteri e o tag sporchi, dopo di che utlizza xpath per ottenere i tag e o il testo che gli interessa.
    Cos'è che non ti è chiaro ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    82
    prima cosa come fare ad andare in "profondità" ovvero a prendere gli attributi degli elementi che sono in a href, poi non capisco cosa devo mettere al posto di
    String pattern = "//body/a";

  7. #7
    Lo stai già facendo con le "//" cmq ti consiglio se proprio vuoi usare XPATH di documentarti...

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    82
    ma perché sulla consolle non stampa niente???

  9. #9
    ehm... Aspetta che controllo la mia sfrera di cristallo e poi te lo dico....
    Magari se posti il codice che hai scritto e la pagina in questione forse....

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    82
    codice:
    static URL url;
    	
    	public static void main(String[] args) throws IOException, XPathExpressionException {
    		// TODO Auto-generated method stub
    		URL url = new URL("http://www.paginaprova.it");
    		BufferedInputStream page = new BufferedInputStream(url.openStream());
    		Tidy tidy = new Tidy();
    		tidy.setQuiet(true);
    		tidy.setShowWarnings(false);
    		Document response = tidy.parseDOM(page, null);
    		XPathFactory factory = XPathFactory.newInstance();
    		XPath xPath=factory.newXPath();
    		String pattern = "//body/a";
    		NodeList nodes = (NodeList)xPath.evaluate(pattern, response, XPathConstants.NODESET);
    		for (int i = 0; i < nodes.getLength(); i++) {
    	        System.out.println((String) nodes.item(i).getNodeValue());
    	}
    		
    	}
    praticamente dovrebbe stampare i nodi però non stampa niente...

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.