Domanda

Senza l'uso di librerie esterne, qual è il modo più semplice per recuperare il contenuto HTML di un sito Web in una stringa?

È stato utile?

Soluzione

Attualmente sto usando questo:

String content = null;
URLConnection connection = null;
try {
  connection =  new URL("http://www.google.com").openConnection();
  Scanner scanner = new Scanner(connection.getInputStream());
  scanner.useDelimiter("\\Z");
  content = scanner.next();
  scanner.close();
}catch ( Exception ex ) {
    ex.printStackTrace();
}
System.out.println(content);

Ma non sono sicuro che esista un modo migliore.

Altri suggerimenti

Questo ha funzionato bene per me:

URL url = new URL(theURL);
InputStream is = url.openStream();
int ptr = 0;
StringBuffer buffer = new StringBuffer();
while ((ptr = is.read()) != -1) {
    buffer.append((char)ptr);
}

Non sono sicuro se le altre soluzioni fornite siano più efficienti o meno.

sono appena andato via questo post nell'altra tua discussione, anche se quello che hai sopra potrebbe funzionare anche.Non penso che uno dei due sarebbe più facile dell'altro.È possibile accedere ai pacchetti Apache semplicemente utilizzando import org.apache.commons.HttpClient nella parte superiore del codice.

Modificare:Ho dimenticato il collegamento ;)

Pur non essendo Java vanilla, offrirò una soluzione più semplice.Usa Groovy ;-)

String siteContent = new URL("http://www.google.com").text

Non è una libreria ma uno strumento chiamato curl generalmente installato nella maggior parte dei server oppure puoi installarlo facilmente in Ubuntu tramite

sudo apt install curl

Quindi recupera qualsiasi pagina html e memorizzala nel tuo file locale come un esempio

curl https://www.facebook.com/ > fb.html

Otterrai la home page html. Puoi eseguirla anche nel tuo browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top