Me gustaría poder obtener el html de una página web y guardarlo en a String
, para poder procesarlo. Además, ¿cómo podría manejar varios tipos de compresión?
¿Cómo haría eso usando Java?
java
http
compression
jjnguy
fuente
fuente
Respuestas:
Aquí hay un código probado usando la clase URL de Java . Sin embargo, recomendaría hacer un mejor trabajo que el que hago aquí para manejar las excepciones o pasarlas por la pila de llamadas.
fuente
DataInputStream
aBufferedReader
. Y reemplazar"dis = new DataInputStream(new BufferedInputStream(is));"
a"dis = new BufferedReader(new InputStreamReader(is));"
InputStreamReader
?Usaría un analizador HTML decente como Jsoup . Entonces es tan fácil como:
Maneja GZIP y respuestas fragmentadas y codificación de caracteres de forma totalmente transparente. También ofrece más ventajas, como el desplazamiento de HTML y la manipulación mediante selectores de CSS, como puede hacer jQuery. Solo tienes que agarrarlo como
Document
, no como unString
.Realmente no desea ejecutar métodos básicos de cadena o incluso expresiones regulares en HTML para procesarlo.
Ver también:
fuente
;)
NetworkOnMainThreadException
La respuesta de Bill es muy buena, pero es posible que desee hacer algunas cosas con la solicitud como compresión o agentes de usuario. El siguiente código muestra cómo puede varios tipos de compresión para sus solicitudes.
Para configurar también el agente de usuario, agregue el siguiente código:
fuente
Bueno, podría optar por las bibliotecas integradas, como URL y URLConnection , pero no dan mucho control.
Personalmente, iría con la biblioteca Apache HTTPClient .Editar: Apache ha establecido el final de la vida útil de HTTPClient. El reemplazo es: Componentes HTTP
fuente
Todos los enfoques mencionados anteriormente no descargan el texto de la página web tal como aparece en el navegador. En estos días, una gran cantidad de datos se cargan en los navegadores a través de scripts en páginas html. ninguna de las técnicas mencionadas admite scripts, solo descarga el texto html solamente. HTMLUNIT admite los javascripts. por lo tanto, si desea descargar el texto de la página web como se ve en el navegador, debe usar HTMLUNIT .
fuente
Lo más probable es que necesite extraer el código de una página web segura (protocolo https). En el siguiente ejemplo, el archivo html se guarda en c: \ temp \ filename.html ¡Disfrute!
fuente
En una caja Unix / Linux, podría simplemente ejecutar 'wget' pero esta no es realmente una opción si está escribiendo un cliente multiplataforma. Por supuesto, esto supone que realmente no desea hacer mucho con los datos que descarga entre el momento en que los descarga y el momento en que llegan al disco.
fuente
Jetty tiene un cliente HTTP que se puede utilizar para descargar una página web.
El ejemplo imprime el contenido de una página web simple.
En un tutorial de Lectura de una página web en Java , he escrito seis ejemplos de cómo descargar una página web programáticamente en Java usando URL, JSoup, HtmlCleaner, Apache HttpClient, Jetty HttpClient y HtmlUnit.
fuente
Obtenga ayuda de esta clase para obtener código y filtrar información.
fuente
Para hacerlo utilizando el poderoso Files.copy de NIO.2 (InputStream in, Path target):
fuente
fuente