Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Internetseite mit jsoup crawlen [java] » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
matt99

Funktioniert :) Besten dank
eulerscheZahl

ungetestet:
code:
1:
2:
3:
4:
5:
6:
7:
for (int i = 1; ; i++) { //hier keine Abbruchbedingung
    try {
        //load page i
    } catch (Exception ex) {
        break; //hier wird die Schleife verlassen
    }
}
matt99

Tatsächlich war es nur nicht in der main-Methode. Das ist das nicht gleich gesehen habe...

Danke!

Weißt du auch zufällig eine Möglichkeit, das Ende einer Seite zu bekommen? Wenn die Internetseite nur 10 Seiten hat, dann kriege ich ab Seite 11 eine Exception. Kann man das irgendwie mit einer while-Schleife, o.ä. abfangen? Im Endeffekt soll mein i solange erhöht werden, bis das ende der Website gefunden wurde.
eulerscheZahl

Klingt, als hättest du i außerhalb der main definiert.
Markiere es dann auch als static oder verschiebe die Variablendeklaration in die main Methode (die zweite Alternative ist zu bevorzugen).
matt99 Internetseite mit jsoup crawlen [java]

Hallo, ich möchte eine Internetseite mit Java (jsoup) durchstöbern. Diese Internetseite hat jedoch mehrere Seiten, welche ich alle nacheinander einmal besuchen möchte und anschließend alle Zahlen der entsprechenden Seite ausgeben soll. Ich habe zwar eine grobe Idee, wie das Programm eine Seite nach der anderen durchsucht, jedoch scheitert es an der Umsetzung.

Mein bisheriger Code:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class crawler {
  private static final int ms_timeout = 5000;
  
  public static void main(String[] args) throws MalformedURLException, IOException
  {
    Document doc = Jsoup.parse(new URL("eineinternetseite.de"), ms_timeout);

    String htmlString = doc.toString();
    
	Pattern pattern = Pattern.compile("\\d+");
	Matcher matcher = pattern.matcher(htmlString);
	
	while(matcher.find())
	{
		System.out.println(matcher.group());
	}
  }
  
}


Meine Idee: Einen Integer nach der URL setzen, welche solange hochgerechnet wird bis das "Ende der Internetseite" erreicht ist, bzw. einfach keine weitere Seite mehr kommt.
Mein Vorteil ist, dass die Internetseite durch ein /page sich trennt. Also:
eineinternetseite.de/page/1 ist Seite 1, eineinternetseite.de/page/2 ist Seite 2, usw.

code:
1:
    Document doc = Jsoup.parse(new URL("eineinternetseite.de/page/" + i), ms_timeout);


Wenn ich jedoch i als Integer definiere, dessen Startwert 1 ist und dann jedesmal i++ durchgeht, bekomme ich eine Fehlermeldung, dass der Typ static sein muss. Und an diesem Punkt kann ich diesen Integer auch nicht mehr erhöhen.