Je voudrais pouvoir récupérer le code HTML d'une page Web et l'enregistrer dans un String
fichier, afin que je puisse y faire un traitement. Aussi, comment pourrais-je gérer différents types de compression.
Comment procéderais-je en utilisant Java?
java
http
compression
jjnguy
la source
la source
Réponses:
Voici un code testé utilisant la classe URL de Java . Je recommanderais cependant de faire un meilleur travail que je ne le fais ici pour gérer les exceptions ou les transmettre dans la pile d'appels.
la source
DataInputStream
parBufferedReader
. Et remplacer"dis = new DataInputStream(new BufferedInputStream(is));"
à"dis = new BufferedReader(new InputStreamReader(is));"
InputStreamReader
?J'utiliserais un analyseur HTML décent comme Jsoup . C'est alors aussi simple que:
Il gère GZIP et les réponses fragmentées et le codage des caractères de manière totalement transparente. Il offre également plus d'avantages, comme la traversée HTML et la manipulation par des sélecteurs CSS, comme jQuery peut le faire. Vous n'avez qu'à le saisir en tant que
Document
, pas en tant queString
.Vous ne voulez vraiment pas exécuter des méthodes String de base ou même des expressions régulières sur HTML pour le traiter.
Voir également:
la source
;)
NetworkOnMainThreadException
La réponse de Bill est très bonne, mais vous voudrez peut-être faire certaines choses avec la demande comme la compression ou les agents utilisateurs. Le code suivant montre comment vous pouvez différents types de compression pour vos demandes.
Pour définir également l'agent utilisateur, ajoutez le code suivant:
la source
Eh bien, vous pouvez utiliser les bibliothèques intégrées telles que URL et URLConnection , mais elles ne donnent pas beaucoup de contrôle.
Personnellement, j'irais avec la bibliothèque Apache HTTPClient .Edit: HTTPClient a été mis en fin de vie par Apache. Le remplacement est: Composants HTTP
la source
Toutes les approches mentionnées ci-dessus ne téléchargent pas le texte de la page Web tel qu'il apparaît dans le navigateur. ces jours-ci, beaucoup de données sont chargées dans les navigateurs via des scripts dans des pages html. aucune des techniques mentionnées ci-dessus ne prend en charge les scripts, ils téléchargent uniquement le texte html. HTMLUNIT prend en charge les javascripts. donc si vous cherchez à télécharger le texte de la page Web tel qu'il apparaît dans le navigateur, vous devez utiliser HTMLUNIT .
la source
Vous devrez probablement extraire du code d'une page Web sécurisée (protocole https). Dans l'exemple suivant, le fichier html est en cours d'enregistrement dans c: \ temp \ filename.html Enjoy!
la source
Sur une machine Unix / Linux, vous pouvez simplement lancer 'wget' mais ce n'est pas vraiment une option si vous écrivez un client multiplateforme. Bien sûr, cela suppose que vous ne voulez pas vraiment faire grand-chose avec les données que vous téléchargez entre le moment de leur téléchargement et leur arrivée sur le disque.
la source
Jetty a un client HTTP qui peut être utilisé pour télécharger une page Web.
L'exemple imprime le contenu d'une simple page Web.
Dans un didacticiel de lecture d'une page Web en Java, j'ai écrit six exemples de téléchargement d'une page Web par programmation en Java à l'aide d'URL, JSoup, HtmlCleaner, Apache HttpClient, Jetty HttpClient et HtmlUnit.
la source
Obtenez de l'aide de cette classe pour obtenir du code et filtrer certaines informations.
la source
Pour ce faire en utilisant NIO.2 puissant Files.copy (InputStream in, Path target):
la source
la source