# Webseite auf Download-Links prüfen und Download starten?



## hdi (3. Feb 2009)

Hi,

also erstmal weiss ich dass ich sowas in der Art schon mal vor ~1 Jahr gefragt hatte.
Leider habe ich es per SuFu nicht mehr gefunden, irgendwie ist das auch verbuggt (Wenn man nach 
Autor "hdi" sucht kommen nicht nur meine Themen, sondern generell meine Beiträge)

Die Frage:

Bsp: Ich habe die Website www.tolledownloads.de, die eig. nur ne ganz normale HTML site ist mit
irgendwelchen Links. Die Links führen evtl auf andere Webseiten, oder bergen direkt ein Downloadbares File.

Ist es nun mit Java irgendwie möglich, mich zu dieser Website zu verbinden, sie auf ihre Links zu scannen, und
einen Link zu verfolgen (ggbflls über weitere Links), bis ich an einem Link angekommen bin, der direkt eine Datei 
hergibt? (D.h. man kann auf der Seite auf den Link -> Rechtsklick -> Speichern unter und bekommt halt nicht
die HTML Seite, sondern eben eine "echte" Datei).
...und diese dann downloaden.

Falls das so pauschal nicht geht, wie könnte das eingeschränkt gehen? Bsp wenn ich genauere Informationen
über den Aufbau der Seite o.ä. habe, kann ich diese Infos in meinem Programm verwenden damit es klappt?

Im Zusammenhang damit frage ich mich, kann ich eine Website nach bestimmten Links durchsuchen, also 
quasi nur den HTML Text durchsuchen? Sodass ich mich verbinde, und halt immer dort wo ich grad bin den 
Site Content (wie gesagt: pures HTML, kein php oder jsp etc) überprüfe auf zB den Text "Download Eclipse",
und wenn ich nen Link mit diesem Teilstring gefunden habe, ihn verfolgen und Datei downloaden..

Das interessiert mich mal echt, weil es gibt viele Seiten im Inet die sich täglich updaten mit tollem Stuff,
alleine schon zB eine News-Seite,und deren Links alle nachverfolgen und den kompletten Content dann
als txt automatisch auf die Platte speichern.
Ich weiss es gibt Feeds dafür, aber wenn die Seite keine anbietet?

Naja, würd mich mal interessieren.

PS: Ich red hier erstmal nur von Seiten, wo man sich nicht einloggen muss oder sowas, also wo man direkten Zugriff auf Downloadlinks hat.

Danke


----------



## Gelöschtes Mitglied 5909 (3. Feb 2009)

urlconnection/httpclient + htmlparser

vom parser die links analysieren und dann ggf mit urlconnection/httpclient auf platte streamen


----------



## hdi (3. Feb 2009)

Okay danke erstmal, aber ich bin da absoluter Anfänger, ich hab über Inet noch nie was gemacht.
Ich glaub ich fang schon total falsch an, kann das sein:


```
private URLConnection website;

	public Connect(String websiteURL) {
		try {
			this.website = new URL(websiteURL).openConnection();
			website.connect();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
```

...weil egal welche Methode ich jetz auf website aufrufe, es kommt immer entweder ein Schrott raus
oder eine -1.

Ausserdem hab ich "HTMLParser" nicht gefunden in der API


----------



## Gelöschtes Mitglied 5909 (3. Feb 2009)

Mal ganz einfach so:


```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class HTTPConnection {
    
    
    public static void main( String[] args ) throws MalformedURLException, IOException {
        URLConnection connection = new URL("http://www.heise.de").openConnection();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }

    }
    
}
```

einen HTMLParser wirst du in der Standard API nicht finden, aber bei google gibts duzend

hier ist auch ne liste http://java-source.net/open-source/html-parsers

Den Stream/Reader übergibst du im normalfall dem Parser und dann sollte er dir Methoden anbieten um daraus Inhalte rauszulesen. Dann kannst du die Links wieder mit ner URLConnection öffnen und dann halt auf Platte Streamen


----------



## paldawin (5. Feb 2009)

Kannst auch HTMLUnit verwenden!


----------



## DocRandom (5. Feb 2009)

..oder aber auch HTTPUnit. 
Ist eben Geschmacksache 

lg


----------



## Mithcoriel (14. Apr 2012)

Ich stelle meine Frage mal hier, da sie zum Thema zu passen scheint.
Ich will nämlich genau das machen: HTTPUnit benutzen um etwas herunterzuladen. Wie aber sorge ich dafür, dass das Program den Link in einem bestimmten Ordner abspeichert, unter einem bestimmten Namen?
(Danach googeln ist ziemlich schwer, denn wenn ich nach "java" + "download" suche kommen natürlich seiten, wo man Java downloaden kann.)

Danke.


----------



## Thraex (18. Apr 2012)

Für mich stellt sich erstmal die Frage, wie man mit HtmlUnit prüfen kann, ob es überhaupt eine downloadbare Datei gibt.


----------

