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

Informatiker Board » Themengebiete » Praktische Informatik » Internetseite mit jsoup crawlen [java] » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Internetseite mit jsoup crawlen [java]
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
matt99
Jungspund


Dabei seit: 23.07.2016
Beiträge: 10

Internetseite mit jsoup crawlen [java] Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
24.10.2016 20:34 matt99 ist offline Beiträge von matt99 suchen Nehmen Sie matt99 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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).

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 25.10.2016 13:57.

25.10.2016 13:56 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
matt99
Jungspund


Dabei seit: 23.07.2016
Beiträge: 10

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von matt99: 25.10.2016 16:45.

25.10.2016 16:40 matt99 ist offline Beiträge von matt99 suchen Nehmen Sie matt99 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
    }
}


__________________
Syntax Highlighting fürs Board (Link)
25.10.2016 17:44 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
matt99
Jungspund


Dabei seit: 23.07.2016
Beiträge: 10

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Funktioniert :) Besten dank
25.10.2016 17:53 matt99 ist offline Beiträge von matt99 suchen Nehmen Sie matt99 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Internetseite mit jsoup crawlen [java]