Content einer Webseite parsen

Alex2xm

Mitglied
Hallo Forum,

habe leider folgendes Problem und finde gerade keinen Ansatz es zu lösen:

Mittels einer URLConnection habe ich mit der Methode
<snip>
public static void verbinden() {
try {
URL urlseite = new URL(URL_Query);
URLConnection urlzugriff = urlseite.openConnection();
DataInputStream zeichenfolge;
String zeile;
zeichenfolge = new DataInputStream(urlzugriff.getInputStream());
while ((zeile = zeichenfolge.readLine()) != null) {
System.out.println(zeile);
} // end of wihle
zeichenfolge.close();
} // end of try
catch (Exception e) {
System.out.println(e);
} // end of catch
} // end of verbinden()
<snip>
den Inhalt einer Webseite (URL wird durch die Variable URL_Query übergeben) ausgelesen. Nun will ich den Inhalt auf bestimmte Worte untersuchen (also ähnlich wie eine Suchmaschine). Kann mir jm. einen Denkanstoss (evtl. sogar mit Code) geben? Wäre Euch sehr verbunden.

Vielen Dank für die Hilfe im Voraus.
Alexander
 
Strings kannst meines Erachtens du doch mit string.find(string what) durchsuchen.
Reicht Dir das nicht oder benötigst Du was anderes?
 
Servus!

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

/*
 * Created on 21.11.2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */

/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class WebsiteReader {
	final String[] KEYWORDS = { "tutorials", "http" };
	public static void main(String[] args) {
		new WebsiteReader().doIt("http://www.tutorials.de");
	}

	/**
	 * 
	 */
	private void doIt(String s) {
		// TODO Auto-generated method stub

		BufferedReader br = null;
		InputStreamReader isr = null;
		URL url = null;
		try {
			url = new URL(s);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		if (url != null) {
			try {
				isr = new InputStreamReader(url.openStream());
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			br = new BufferedReader(isr);

			String line = null;

			try {
				while ((line = br.readLine()) != null) {
					if (checkKeyWords(line)) {

						System.out.println(line);
					}
				}

			} catch (IOException e2) {
				// TODO Auto-generated catch block
				e2.printStackTrace();
			}

		}

	}

	/**
	 * @param line
	 * @return
	 */
	private boolean checkKeyWords(String line) {
		// TODO Auto-generated method stub

		for (int i = 0; i < KEYWORDS.length; i++) {
			if (line.indexOf(KEYWORDS[i]) >= 0)
				return true;
		}

		return false;
	}
}

Gruß Tom
 
Zuletzt bearbeitet:
Hi Thomas,

danke für Deine Mühe mir ein fertiges Programm zu liefern. Hast mir wirklich weitergeholfen.
Vielen Dank!

Alexander
 
Noch ein Problemchen

Hi,

zu obigen Programm habe ich noch eine Frage. Wie bekomme ich es hin, dass die Keywords nicht Casesensitiv sind?

Danke für die Hilfe im Voraus.

Viele Grüße

Alex
 
Stehe wohl auf dem Schlauch

Irgendwie verstehe ich das leider nicht so ganz. Stehe wohl auf dem Schlauch...

also nochmals komplett:
Code:
	private boolean checkKeyWords(String line) {
		for (int i = 0; i < KEYWORDS.length; i++) {
			if (line.indexOf(KEYWORDS[i]) >= 0)
// hier sollen die Keywords gesucht werden. Aber wie?
				return true;
		}

		return false;
	}

Die Keywords werden ja wie folgt angelegt:
Code:
final String[] KEYWORDS = { "tutorials", "http" };

Das Problem ist nun, dass es ja unterschiedliche Schreibweise gibt. Z.B. kann tutorials auch Tutorials oder TuToRiAlS geschrieben werden. Es müssen allerdings alle Keywords gefunden werden.

Hoffe es kann mir jm. helfen.

Danke im Voraus
Alex
 
Zurück