120 votes

Comment avez-vous par programme de Téléchargement d'une Page web en Java

Je voudrais être en mesure de récupérer une page web html et l'enregistrer à l' String, afin que je puisse effectuer un traitement sur elle. Aussi, comment pourrais-je gérer différents types de compression.

Comment pourrais-je aller sur le faire à l'aide de Java?

179voto

BalusC Points 498232

J'aimerais utiliser un décent analyseur HTML comme Jsoup. C'est alors aussi simple que:

String html = Jsoup.connect("http://stackoverflow.com").get().html();

Il gère GZIP et des fragments de réponses et codage de caractère entièrement transparente. Il offre plus d'avantages que bien, comme le HTML de la traversée et de la manipulation par les sélecteurs CSS comme jQuery peut faire. Vous n'avez qu'à le saisir en tant que Document, pas en tant que String.

Document document = Jsoup.connect("http://google.com").get();

Vous avez vraiment n'avez pas envie de courir de base de la Chaîne de méthodes ou même regex sur le code HTML.

Voir aussi:

113voto

Bill the Lizard Points 147311

Voici quelques testé le code à l'aide de Java URL classe. Je recommande de faire un meilleur travail que je fais ici de la manipulation des exceptions ou passer vers le haut de la pile des appels.

public static void main(String[] args) {
    URL url;
    InputStream is = null;
    BufferedReader br;
    String line;

    try {
        url = new URL("http://stackoverflow.com/");
        is = url.openStream();  // throws an IOException
        br = new BufferedReader(new InputStreamReader(is));

        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (MalformedURLException mue) {
         mue.printStackTrace();
    } catch (IOException ioe) {
         ioe.printStackTrace();
    } finally {
        try {
            if (is != null) is.close();
        } catch (IOException ioe) {
            // nothing to see here
        }
    }
}

27voto

jjnguy Points 62123

Le projet de loi de réponse est très bon, mais vous pouvez faire quelques choses avec la demande, telles que la compression ou user-agents. Le code suivant montre comment vous pouvez les différents types de compression à vos demandes.

URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // Cast shouldn't fail
HttpURLConnection.setFollowRedirects(true);
// allow both GZip and Deflate (ZLib) encodings
conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
String encoding = conn.getContentEncoding();
InputStream inStr = null;

// create the appropriate stream wrapper based on
// the encoding type
if (encoding != null && encoding.equalsIgnoreCase("gzip")) {
    inStr = new GZIPInputStream(conn.getInputStream());
} else if (encoding != null && encoding.equalsIgnoreCase("deflate")) {
    inStr = new InflaterInputStream(conn.getInputStream(),
      new Inflater(true));
} else {
    inStr = conn.getInputStream();
}

Pour définir le user-agent ajoutez le code suivant:

conn.setRequestProperty ( "User-agent", "my agent name");

13voto

Jon Skeet Points 692016

Eh bien, vous pourriez aller avec les bibliothèques intégrées telles que l' URL et URLConnection, mais ils ne donnent pas beaucoup de contrôle.

Personnellement, j'irais avec l' Apache HTTPClient de la bibliothèque.
Edit: HTTPClient a été envoyé à la fin de la vie par Apache. Le remplacement est: HTTP Composants

-1voto

Deepak Points 27

Essayez d'utiliser le jsoup de la bibliothèque.

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;


public class ParseHTML {

    public static void main(String args[]) throws IOException{
        Document doc = Jsoup.connect("https://www.wikipedia.org/").get();
        String text = doc.body().text();

        System.out.print(text);
    }
}

Vous pouvez télécharger le jsoup bibliothèque ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X