OVH Cloud OVH Cloud

Screen - Scraping.

2 réponses
Avatar
ocotasson
Bonjour à tous.

Je cherche un moyen de faire du "screen-scraping" C'est à dire de lire
le HTML d'une page distante, d'en rapatrier tout ou partie (vive les
expressions régulières) sur mon serveur (afin de pouvoir l'exploiter).

Je sais le faire en .Net (c'est la classe WebRequest), mais je ne
trouve aucun exemple sur Google pour Java.

Auriez-vous une idée, un bout de code ?

A vot' bon coeur m'sieur dame !

;-)

2 réponses

Avatar
benoit
regarde java.net.URL
(new URL(url)).openStream()
ca devrait faire l'affaire , mais si tu veux recup l'encoding passe par
URL url = new URL("http://....");
URLConnection urlConnection = url.openConnection()
BufferedReader reader = new BufferedReader(
new InputStreamReader(
urlConnection.getOuputStream(),
urlConnection.getContentEncoding()));
voila ca devrait suffire

benoit

|||Cypher||| wrote:
Bonjour à tous.

Je cherche un moyen de faire du "screen-scraping" C'est à dire de lire
le HTML d'une page distante, d'en rapatrier tout ou partie (vive les
expressions régulières) sur mon serveur (afin de pouvoir l'exploiter).

Je sais le faire en .Net (c'est la classe WebRequest), mais je ne
trouve aucun exemple sur Google pour Java.

Auriez-vous une idée, un bout de code ?

A vot' bon coeur m'sieur dame !

;-)


Avatar
ocotasson
Merci! Connaissant la classe (java.net.URL) la recherche sur Google
est beaucoup plus productive. ;-)

J'ai trouvé le snippet suivant qui me donne satisfaction :


/** ReadUrl.java by Neil Moomey
* Example of use: java UrlReader http://www.google.com
* This class reads a URL and returns the content with readUrl
*/
import java.net.*;
import java.io.*;

class UrlReader
{
String url;

//constructor
UrlReader(String url) {
setUrl(url);
}

void setUrl(String url) {
this.url=url;
}

String getUrl() {
return this.url;
}

String readUrl() {
try {
// Define a URL
URL sourceURL = new URL(getUrl());
// Get a character input stream for the URL
BufferedReader in = new BufferedReader(
new InputStreamReader(
sourceURL.openStream()));

System.out.println("nnnReading the file " +
sourceURL.getFile() +
" on the host " + sourceURL.getHost() +
" using " + sourceURL.getProtocol());

String linebuffer; // Buffer to store each line
String bigbuffer=""; // Buffer to store all lines
while(!(null==(linebuffer=in.readLine())))
bigbuffer += linebuffer +"n";
in.close(); // Close the input
stream
return bigbuffer;
}
catch(MalformedURLException e) {
System.out.println("Failed to create URL:n" + e);
}
catch(IOException e) {
System.out.println("File error:n" + e);
}
return null;
}
// main class for testing
public static void main(String[] args) {
if (args.length==0) System.out.println("Example of use: java
UrlReader http://www.google.comn");
UrlReader ur = new UrlReader(args[0]);
String content = ur.readUrl();
System.out.println("The method ur.readUrl() returns the
String:n"+content);
}
}