Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2012, 13:55   #1
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 14:13   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da gepeppe Guarda i messaggi
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
Ciao, puoi appoggiarti a librerie già esistenti e mature per costruire la tua applicazione. Ad esempio vedi:
- 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 14:21.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 14:28   #3
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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 14:32.
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 14:55   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da gepeppe Guarda i messaggi
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
Se l'esempio che hai fatto con Wikipedia non è solo un esempio ma è proprio ciò che vuoi realizzare, allora la prima cosa da fare è chiedersi (per poi scoprire) se quel servizio web (Wikipedia) espone una API.

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 14:58.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 15:17   #5
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2012, 17:35   #6
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2012, 00:34   #7
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Vuol dire che alcuni elementi della pagina sono stati caricati tramite javascript, forse ajax. Questo è un ottimo motivo per usare le API apposite.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2012, 15:36   #8
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2012, 10:48   #9
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da gepeppe Guarda i messaggi
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?
Non è che per caso ci sono iframe per cui hai i contenuti sparsi su più pagine?
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
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2012, 13:08   #10
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2012, 09:14   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da gepeppe Guarda i messaggi
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.
In pratica sì.
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2012, 10:55   #12
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
Pirate Face è il Pirate Bay degli LLM: i...
ASUS ROG Azoth 96 HE: con gli switch mag...
Tutte le offerte Amazon aggiornate: sono...
DeepSeek punta sempre di più sui ...
Apple rilascia le prime beta pubbliche d...
La Terra di Mezzo: L'Ombra di Mordor e L...
iPhone 18 Pro e Pro Max smontati da iFix...
Control Resonant supera i 2 milioni di w...
Anker porta in Italia gli auricolari ope...
Googlebook, preordini aperti per i primi...
MSI Pro Max Edge AI+: fino a 96 GB di me...
Trump propone di cambiare il nome dell'i...
Sennheiser MOMENTUM 5 a 299€ invece di 3...
Il prossimo Halo sarà sviluppato ...
Philips Sonicare contro Oral-B iO: spazz...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v