Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2012, 14: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, 15: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 15:21.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 15: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 15:32.
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 15: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 15:58.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 06-02-2012, 16: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, 18: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, 01:34   #7
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2795
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, 16: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, 11: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, 14: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, 10: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, 11: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


Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Smartbox colpita da un attacco hacker: e...
Un'IA risolve in 3 giorni un enigma che ...
TOP 10 Amazon weekend: tornano gli Smart...
ReactOS introduce il supporto USB 3.0: i...
TECLAST M60 a soli 159€ su Amazon: table...
Haier da 65 pollici a partire da 397€ su...
Google Pixel 11, Pro e Pro XL in offerta...
Memorie, inversione di tendenza: i PC co...
Rubati 6 pallet di hardware NVIDIA da 11...
Addio ai limiti del silicio? Ecco il dia...
Windows 11 27H2 sarà un 'cambio completo...
Hai mai notato che l'iPhone sbaglia semp...
Raffreddamento a liquido e schermo perso...
TSMC valuta la produzione di 3D DRAM su ...
Il Cybertruck ha i giorni contati? Musk ...
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: 13:15.


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