Hey,
ich habe eine Klasse um den Source Code von Websites zu holen.
Das funktioniert normalerweise auch Super, jedoch habe ich jetzt beim Zugriff auf die Klasse mit dieser Methode ein Problem.
Diese Methode soll mir die Seitenzahlen zurückgeben. Dazu hab ich mir überlegt, dass man einfach in bestimmten Abschnitten hochzählt bis die fehler Seite angezeigt wird und dann wieder zurück zählt. Sodass man nicht in einzer Schritten abzählen muss. Sind nämlich mehr als 1000 Seiten und um den Source zu holen dauert das ja seine Zeit.
Allerdings bekomme ich jetzt, wenn die fehler Seite angezeigt wird und es mit der ersten if Anweisung (Zeile 10)überprüft wird folgende Fehlermeldung in Zeile 32 der getSource Methode: HttpURLConnection fehler [local variables unavailable]
Wäre gut wenn da jemand mal drüber schauen könnte.
Und wenn ich jetzt schonmal frage, weis jemand ob es schon vorgefertigte kostenlose Klassen gibt die genau so eine Überprüfung wie ich vorhabe machen?
Vielen Dank
ich habe eine Klasse um den Source Code von Websites zu holen.
Java:
public class BasicCookie {
static LinkedList<String> getSource(String uri) throws MalformedURLException, IOException
{
String line = null;
String userAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0";
LinkedList<String> Source = new LinkedList<String>();
LinkedList<String> cookie = null;
String cock = null;
String cookieName = null;
String cookieValue = null;
cookie = getCookie(uri);
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.addRequestProperty("User-Agent", userAgent);
HttpURLConnection.setFollowRedirects(false);
for(int i = 0; i < cookie.size(); i++)
{
cock = cookie.get(i);
cock = cock.substring(0, cock.indexOf(";"));
cookieName = cock.substring(0, cock.indexOf("="));
cookieValue = cock.substring(cock.indexOf("=") + 1, cock.length());
connection.setRequestProperty(cookieName, cookieValue);
}
connection.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
while(((line = rd.readLine()) != null))
{
Source.add(line);
}
connection.disconnect();
return Source;
}
static LinkedList<String> getCookie(String uri) throws IOException
{
String userAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0";
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.addRequestProperty("User-Agent", userAgent);
HttpURLConnection.setFollowRedirects(false);
connection.connect();
LinkedList<String> cookie = new LinkedList<String>();
String headerName = null;
for (int i = 1; (headerName = connection.getHeaderFieldKey(i))!=null; i++) {
if (headerName.equals("Set-Cookie")) {
cookie.add(connection.getHeaderField(i));
}
}
connection.disconnect();
return cookie;
}
Das funktioniert normalerweise auch Super, jedoch habe ich jetzt beim Zugriff auf die Klasse mit dieser Methode ein Problem.
Diese Methode soll mir die Seitenzahlen zurückgeben. Dazu hab ich mir überlegt, dass man einfach in bestimmten Abschnitten hochzählt bis die fehler Seite angezeigt wird und dann wieder zurück zählt. Sodass man nicht in einzer Schritten abzählen muss. Sind nämlich mehr als 1000 Seiten und um den Source zu holen dauert das ja seine Zeit.
Allerdings bekomme ich jetzt, wenn die fehler Seite angezeigt wird und es mit der ersten if Anweisung (Zeile 10)überprüft wird folgende Fehlermeldung in Zeile 32 der getSource Methode: HttpURLConnection fehler [local variables unavailable]
Wäre gut wenn da jemand mal drüber schauen könnte.
Und wenn ich jetzt schonmal frage, weis jemand ob es schon vorgefertigte kostenlose Klassen gibt die genau so eine Überprüfung wie ich vorhabe machen?
Java:
int number;
String Link;
LinkedList<String> Source = new LinkedList<String>();
for(number = 1; number <= 5000; number += 500)
{
Link = "http://www.******.de/"+ number;
Source = getSource(Link);
if ((Source.get(102).contains("404")))
{
for(;; number -= 100)
{
Link = "http://www.******.de/"+ number;
Source = getSource(Link);
if(!(Source.get(102).contains("404")))
{
do
{
Link = "http://www.******.de/"+ number;
Source = getSource(Link);
number++;
}while(Source.get(102).contains("404"));
}
}
}
}
Vielen Dank