Eu quero fazer um programa que me importe o conteúdo de uma determinada página (em formato texto) para uma caixa de texto ou uma variável dentro de um programa java para eu depois analisar os dados, isso é possível?
Obrigado e desculpem se a resposta é muito simples ainda não sei muito de java.
Sim do tipo. Eu defino a Wikipedia no enederço www.wikipedia.org e o programa importa todo o texto dessa página para uma String ou String[] de maneira a poder tratar os dados, copiando algo do género:
WIKIPEDIA
Wikipedia
English
The Free Encyclopedia
3 256 000+ articles
日本語
フリー百科事典
669 000+ 記事
Deutsch
Die freie Enzyklopädie
1 054 000+ Artikel
Español
La enciclopedia libre
588 000+ artículos
Français
L?encyclopédie libre
937 000+ articles
Polski
Wolna encyklopedia
690 000+ haseł
Italiano
L?enciclopedia libera
678 000+ voci
Русский
Свободная энциклопедия
525 000+ статей
Português
A enciclopédia livre
560 000+ artigos
Nederlands
De vrije encyclopedie
598 000+ artikelen
Search ? Suchen ? Rechercher ? Szukaj ? Ricerca ? 検索 ? Zoeken ? Buscar ? Busca ? Поиск ? Sök ? 搜索 ? Søk ? Cerca ? Haku ? Пошук ? Hledání ? Keresés ? Ara ? Căutare ? 찾기 ? Serĉu ? Søg ? بحث ? Cari ? Suk ? Tìm kiếm ? Hľadať ? Претрага ? Paie?ka ? חיפוש
100 000+
العربية ? Català ? Česky ? Dansk ? Deutsch ? English ? Español ? Esperanto ? Français ? 한국어 ? Bahasa Indonesia ? Italiano ? עברית ? Lietuvių ? Magyar ? Nederlands ? 日本語 ? Norsk (bokmål) ? Polski ? Português ? Русский ? Română ? Slovenčina ? Српски / Srpski ? Suomi ? Svenska ? Türkçe ? Українська ? Tiếng Việt ? Volapük ? 中文
10 000+
Afrikaans ? Aragonés ? Asturianu ? Kreyòl Ayisyen ? Azərbaycan / آذربايجان ديلی ? বাংলা ? Беларуская (Акадэмічная ·Тарашкевiца) ? বিষ্ণুপ্রিযা় মণিপুরী ? Bosanski ? Brezhoneg ? Български ? Чăваш ? Cymraeg ? Eesti ? Ελληνικά ? Euskara ? فارسی ? Frysk ? Gaeilge ? Galego ? ગુજરાતી ? हिन्दी ? Hrvatski ? Ido ? Íslenska ? Basa Jawa ? ქართული ? Kurdî / كوردی ? Latina ? Latvie?u ? Lëtzebuergesch ? Lumbaart ? Македонски ? മലയാളം ? मराठी ? Bahasa Melayu ? नेपाल भाषा ? Norsk (nynorsk) ? Nnapulitano ? Occitan ? Piemontèis ? Plattdüütsch ? Ripoarisch ? Runa Simi ? Shqip ? Sicilianu ? Simple English ? Sinugboanon ? Sloven?čina ? Srpskohrvatski / Српскохрватски ? Basa Sunda ? Kiswahili ? Tagalog ? தமிழ் ? తెలుగు ? ไทย ? اردو ? Walon ? Winaray ? 粵語 ? ?emaitė?ka
1 000+
Bahsa Acèh ? Alemannisch ? አማርኛ ? Armãneashce ? Arpitan ? ܐܬܘܪܝܐ ? Avañe?ẽ ? Bân-lâm-gú ? Basa Banyumasan ? भोजपुरी ? Bikol Central ? Boarisch ? བོད་ཡིག ? Chavacano de Zamboanga ? Corsu ? Deitsch ? ދިވެހި ? Diné Bizaad ? Eald Englisc ? Эрзянь ? Estremeñu ? Fiji Hindi ? Føroyskt ? Furlan ? Gaelg ? Gàidhlig ? 贛語 ? گیلکی ? 文言 ? Hak-kâ-fa / 客家話 ? ʻŌlelo Hawaiʻi ? Հայերեն ? Hornjoserbsce ? Ilokano ? Interlingua ? Interlingue ? Ирон Æвзаг ? ಕನ್ನಡ ? Kapampangan ? Kaszëbsczi ? Kernewek ? ភាសាខ្មែរ ? Коми ? Кыргызча ? Ladino / לאדינו ? Ligure ? Limburgs ? Lingála ? lojban ? Malagasy ? Malti ? Māori ? مصرى ? مازِرونی / Mäzeruni ? Монгол ? ဗမာစာ ? Nāhuatlahtōlli ? Nedersaksisch ? नेपाली ? Nouormand ? Novial ? Олык Марий ? O?zbek ? पाऴि ? Pangasinán ? ਪੰਜਾਬੀ / پنجابی ? پښتو ? Қазақша ? Qırımtatarca ? Rumantsch ? संस्कृतम् ? Sámegiella ? Sardu ? Саха Тыла ? Scots ? Seeltersk ? شاہ مکھی پنجابی ? සිංහල ? Ślůnski ? کوردی ? Tarandíne ? Татарча / Tatarça ? Тоҷикӣ ? Lea faka-Tonga ? Türkmen ? Uyghur / ئۇيغۇرچه ? Vèneto ? Võro ? West-Vlams ? Wolof ? 吴语 ? ייִדיש ? Yorùbá ? Zazaki
100+
Akan ? Аҧсуа ? Авар ? Aymara ? Bamanankan ? Башҡорт ? Bislama ? Chamoru ? Cuengh ? Dolnoserbski ? Emigliàn-Rumagnòl ? Eʋegbe ? Gĩkũyũ ? 𐌲𐌿𐍄𐌹𐍃𐌺 ? Хальмг ? Hausa / هَوُسَا ? Igbo ? ᐃᓄᒃᑎᑐᑦ / Inuktitut ? Iñupiak ? Kalaallisut ? कश्मीरी / كشميري ? Kongo ? ພາສາລາວ ? Mìng-dĕ̤ng-ngṳ̄ ? Mirandés ? Мокшень ? Молдовеняскэ ? Na vosa vaka-Viti ? Dorerin Naoero ? Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ ? Norfuk / Pitkern ? Нохчийн ? ଓଡି଼ଆ ? Afaan Oromoo ? অসমীযা় ? Papiamentu ? Picard ? Ποντιακά ? Къарачай?Малкъар ? Qaraqalpaqsha ? རྫོང་ཁ ? Romani / रोमानी ? Gagana Sāmoa ? Sängö ? Setswana ? سنڌي ? Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ ? Af Soomaali ? SiSwati ? Sranantongo ? Reo Tahiti ? Taqbaylit ? Tetun ? ትግርኛ ? Tok Pisin ? ᏣᎳᎩ ? ᨅᨔ ᨕᨙᨁᨗ ? Xitsonga ? Удмурт ? Tshivenḓa ? isiXhosa ? Zeêuws ? isiZulu
Other languages ? Weitere Sprachen ? Autres langues ? Kompletna lista języków ? 他の言語 ? Otros idiomas ? 其他语言 ? Другие языки ? Aliaj lingvoj ? 다른 언어 ? Ngôn ngữ khác
Wiktionary Wiktionary
Wikinews Wikinews
Wikiquote Wikiquote
Wikibooks Wikibooks
Wikispecies Wikispecies
Wikisource Wikisource
Wikiversity Wikiversity
Wikimedia Commons Commons
Meta-Wiki Meta-Wiki
Wikimedia
public static void main( String[] args ) {
//chama o método getURLData
System.out.println( getURLData( "http://lia.dc.ufscar.br/david" ) );
}
// método estático para a obtenção dos dados de uma determinada url
public static String getURLData( String url ) {
// cria um StringBuilder para armazenar a saída
StringBuilder saida = new StringBuilder();
try {
// cria uma url com o endereço passado
URL u = new URL( url );
// abre a conexão com a url criada
URLConnection uCon = u.openConnection();
// obtém o input stream da conexão
InputStream in = uCon.getInputStream();
// um buffer para a leitura dos dados obtidos no input stream
byte[] buffer = new byte[2048];
// tenta colocar dados dentro do buffer. enquanto existirem dados
//(resultado da leitura diferentede -1), a execução continua
while ( in.read( buffer ) != -1 ) {
// faz o append dos dados lidos na saida (StringBuilder)
saida.append( new String( buffer ) );
}
// fecha o input stream
in.close();
// tratamento de excessões...
} catch ( MalformedURLException exc ) {
saida.append( "ERRO: URL mal formada." );
exc.printStackTrace();
} catch ( IOException exc ) {
saida.append( "IOException" );
exc.printStackTrace();
} catch ( SecurityException exc ) {
saida.append( "ERRO: Não há permissão para conexão." );
exc.printStackTrace();
} catch ( IllegalArgumentException exc ) {
saida.append( "ERRO: O proxy é null ou de tipo incorreto." );
exc.printStackTrace();
} catch ( UnsupportedOperationException exc ) {
saida.append( "ERRO: A subclasse que implementa o protocolo não suporta este método." );
exc.printStackTrace();
}
// retorna o que existe na saída na forma de uma String
return saida.toString();
}
[quote=davidbuzatto]Então, como vc quer só o texto fica um pouco mais complicado.
Você teria que analisar os dados retornados.[/quote]
Estive a tentar testar criei no NetBeans um projecto vazio, colei o código e deu os seguintes erros:
run:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at java.net.Socket.connect(Socket.java:475)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.(HttpClient.java:233)
IOException
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
at t.T.getURLData(T.java:30)
at t.T.main(T.java:11)
Qual será a origem destes erros? Eu estou a utilizar neste momento uma internet com proxy, será disso?
Quanto ao tratamento dos dados eu depois faço isso se tiver duvidas coloco mas esta primeira parte era mais importante.
Já testei numa ligação sem proxy e funciona, MUITO OBRIGADO davidbuzatto.
Só que neste momento ele retorna o html da página e não o seu texto final. Para retirar os dados que não sejam formatação html talvez a solução passe por ignorar tudo o que esteja dentro de <> correndo o erro de ignorar dados da página (que pode conter <>).
Haverá alguma fora de carregar só o texto sem formatações html ?
Realmente, como eu disse, volta o código e não somente o texto.
Você pode tentar usar algum parser de html para pegar apenas o que precisa.
Um parser que você pode testar é o JTidy. http://jtidy.sourceforge.net/
Na seção getting started, dê uma olhada em JTidy API. Lá tem as primeiras dicas para você poder utilizar.
Realmente, como eu disse, volta o código e não somente o texto.
Você pode tentar usar algum parser de html para pegar apenas o que precisa.
Um parser que você pode testar é o JTidy. http://jtidy.sourceforge.net/
Na seção getting started, dê uma olhada em JTidy API. Lá tem as primeiras dicas para você poder utilizar.
Vou já testar o que você (em Portugal normalmente trata-se as pessoas por tu é um bocado estranho escrever você se eu tratar por tu foi esquecimento) me mandou.
[quote=davidbuzatto]Olá, Ví o endereço que você passou e é basicamente o que eu fiz, com outras coisinhas mais.
Teste e veja se funciona
[]´s[/quote]
Já estive a ver e faz a mesma coisa também com o HTML, já estou noutra a arranjar um código conversor de HTML para texto não deve ser difícil já muita gente deve ter precisado disso. Depois vou é ter problemas com o Proxy pois passo muitas horas num local onde só tenho acesso à net por proxy e o método lá em cima não funciona mas depois vejo isso,