|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
[JAVA]parsing di pagine web
Salve, sto scrivendo un progetto java, e avrei bisogno di effettuare il parsing di alcune pagine web, in modo da estrarre dei contenuti (testo in specifici tag div, p ecc..). Come posso realizzarlo in java?
Grazie
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
- html parser - jsoup Queste si smazzano tutta la complessità del parsing al posto tuo e ti sputano la pagina in un formato strutturato (tipicamente un dom) pronto al consumo (elabori quel che ti serve). Se invece devi fare tutto "a mano" allora la strada è più lunga (molto più lunga) e dipende anche da che cosa devi realizzare di preciso. Comunque, di base, da un oggetto URL su cui hai aperto una connessione puoi ricavare l'Inputstream associato, ergo puoi acquisire i dati a cui punta l'url (ad esempio la pagina html). Vedi i dati come una stringa di testo, e in qualche modo ne fai il parsing (tipicamente a colpi di magia voodoo con le regex) ed elabori quel che devi elaborare: la complessità dipende da come è fatta la pagina e da quanto e cosa ci devi fare.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 06-02-2012 alle 15:21. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
ti ringrazio, jsoup mi sembra più completo di html parser. Penso che opterò per il primo + eclipse
E se invece volessi inviare dati ad una pagina html? Faccio un esempio con wikipedia. Dalla mia applicazione voglio cercare una pagina in wikipedia. Allora vorrei inviare una stringa alla pagine di wikipedia e dirgli "cerca questo", e recuperare quello che la pagina mi restituisce facendo poi il parsing e togliendo e/o risistemandola a modo mio. Devo cercare di capire come realizzare una cosa del genere
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread Ultima modifica di gepeppe : 06-02-2012 alle 15:32. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Fino a 5 minuti fa non ne sapevo niente ma con una piccola ricerca ho appreso che sì, Wikipedia espone un'API (più precisamente è MediaWiki che espone un'API per i servizi che supporta, tra cui Wikipedia). - link a MediaWiki (pagina di Wikipedia) - link a MediaWiki API page Andando a leggersi i termini d'uso e studiandosi l'API in questione sarebbe poi possibile costruire una propria applicazione che si interfaccia con Wikipedia tramite quella API (e dimenticare la facceda dello scraping delle pagine html, che, per quanto interessante di per se, è pur sempre una faccenda sporca, rozza & forse neanche tanto "pulita" dal punto di vista legale [bisogna prima informarsi però]).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 06-02-2012 alle 15:58. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
non avevo pensato di usare le api... ho controllato ed esistono anche per il sito di cui ho bisogno (simile a wikipedia). Magari cosi mi risulta più semplice programmare l'applicazione XD
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
Ho notato un piccolo problema. Se ad esempio vedo una pagina web (il risultato di una ricerca) con firebug vedo una cosa (tutte le informazioni di cui ho bisogno), se ne vedo una con "mostra sorgenti pagina" di firefox, ne vedo una meno completa...purtroppo JSOUP da quanto ho visto, vede solo la seconda possibilità!
C'è un modo per risolvere il problema?
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Vuol dire che alcuni elementi della pagina sono stati caricati tramite javascript, forse ajax. Questo è un ottimo motivo per usare le API apposite.
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
no, in quest'altro sito non ci sono API disponibili purtroppo. Quindi devo inviare i dati dal programma java verso il form (metodi post e get, dipende) della pagina tot.html, e recuperare la pagina di risposta.
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Un'altra alternativa potrebbe essere quella di integrare un browser vero nel tuo software (WebKit, Firefox). Ad esempio per Firefox qui c'è un esempio: http://stackoverflow.com/questions/2...-in-java-swing |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
non ne ho idea, cmq potete controllare, la pagina di cui parlo è quella di mymovies.it (volevo realizzare un'applicazione personale, per ora, per android...visto che il sito non ha neppure una versione mobile decente)... con altri siti sono riuscito a recuperare i vari tag html tramite jsoup, con questo non ci riesco...
Se effettuo una ricerca, sembra che la "sezione" dei risultati non venga recuperata da jsoup (che invece recupera tutto il resto che ne fa da "contorno")
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Occhio però alla questione legale (stai facendo web scraping), sempre che la stessa ti interessi. In questa pagina puoi cominciare a farti un'idea: http://www.galvanilegal.com/is-web-scraping-legal La prima cosa che farei, fossi al tuo posto, è vedere se il sito fornisce i "termini d'uso" dello stesso per poi leggerli e verificare che non sia esplicitamente vietato lo scraping dei contenuti (vedi il link per maggiori info).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
grazie, non credevo che non fosse legale, non l'avevo mai vista sotto questo punto di vista. Grazie
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:53.




















