Eu gostaria de poder buscar o html de uma página da web e salvá-lo em um String
, para que eu possa fazer algum processamento nele. Além disso, como poderia lidar com vários tipos de compressão.
Como eu faria isso usando Java?
java
http
compression
jjnguy
fonte
fonte
Respostas:
Aqui estão alguns códigos testados usando a classe URL do Java . Eu recomendo fazer um trabalho melhor do que o que faço aqui para lidar com as exceções ou transferi-las para a pilha de chamadas, no entanto.
fonte
DataInputStream
porBufferedReader
. E substitua"dis = new DataInputStream(new BufferedInputStream(is));"
por"dis = new BufferedReader(new InputStreamReader(is));"
InputStreamReader
?Eu usaria um analisador de HTML decente como o Jsoup . Então, é tão fácil quanto:
Ele lida com GZIP e respostas fragmentadas e codificação de caracteres de forma totalmente transparente. Ele oferece mais vantagens também, como passagem de HTML e manipulação por seletores CSS, como o jQuery pode fazer. Você só precisa agarrá-lo como
Document
, não como umString
.Você realmente não deseja executar métodos String básicos ou mesmo regex em HTML para processá-lo.
Veja também:
fonte
;)
NetworkOnMainThreadException
A resposta de Bill é muito boa, mas você pode querer fazer algumas coisas com a solicitação, como compressão ou agentes de usuário. O código a seguir mostra como você pode aplicar vários tipos de compactação às suas solicitações.
Para definir também o user-agent, adicione o seguinte código:
fonte
Bem, você poderia ir com as bibliotecas integradas, como URL e URLConnection , mas elas não oferecem muito controle.
Pessoalmente, eu escolheria a biblioteca Apache HTTPClient .Editar: HTTPClient foi definido para o fim da vida pelo Apache. A substituição é: Componentes HTTP
fonte
Todas as abordagens mencionadas acima não baixam o texto da página da web como ele aparece no navegador. hoje em dia, muitos dados são carregados nos navegadores por meio de scripts em páginas html. nenhuma das técnicas mencionadas acima oferece suporte a scripts, elas apenas baixam apenas o texto html. HTMLUNIT oferece suporte a javascripts. portanto, se você deseja fazer o download do texto da página da web conforme aparece no navegador, deve usar HTMLUNIT .
fonte
Provavelmente, você precisará extrair o código de uma página da web segura (protocolo https). No exemplo a seguir, o arquivo html está sendo salvo em c: \ temp \ filename.html Divirta-se!
fonte
Em uma máquina Unix / Linux, você pode simplesmente executar 'wget', mas esta não é realmente uma opção se você estiver escrevendo um cliente de plataforma cruzada. É claro que isso pressupõe que você realmente não deseja fazer muito com os dados baixados entre o ponto de baixá-los e chegar ao disco.
fonte
Jetty tem um cliente HTTP que pode ser usado para baixar uma página da web.
O exemplo imprime o conteúdo de uma página da web simples.
Em um tutorial Lendo uma página da web em Java , escrevi seis exemplos de download de uma página da web programaticamente em Java usando URL, JSoup, HtmlCleaner, Apache HttpClient, Jetty HttpClient e HtmlUnit.
fonte
Obtenha ajuda desta classe para obter o código e filtrar algumas informações.
fonte
Para fazer isso usando NIO.2 poderoso Files.copy (InputStream em, Path target):
fonte
fonte