2016-10-28 6 views
-2

Kann jemand mir bei der Suche nach einer bestimmten Zeichenfolge in HTML-Datei mit Jsoup oder einer anderen Methode helfen. Es gibt eingebaute Methoden, aber sie helfen beim Extrahieren von Titel- oder Skripttexten innerhalb eines bestimmten Tags und nicht im allgemeinen String. In diesem Code habe ich eine solche eingebaute Methode verwendet, um Titel aus der HTML-Seite zu extrahieren. Aber ich möchte stattdessen eine Zeichenfolge suchen.Suche nach einer Zeichenfolge in HTML-Datei mit Jsoup

package dynamic_tester; 
import java.io.File; 
import java.io.IOException; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
public class tester { 
    public static void main(String args[]) 
    {  
Document htmlFile = null; 
{ 
try { 
    htmlFile = Jsoup.parse(new File("x.html"), "ISO-8859-1"); 

} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
String title = htmlFile.title(); 
System.out.println("Title = "+title); 
} 
} 
} 
+1

Wenn Sie nach String suchen wollen, warum verwenden Sie nicht einfach die 'indexOf()' Methode von String? – 11thdimension

+0

Aber ich habe keine Zeichenfolge oder eine Textdatei, um eine solche Operation durchzuführen. Ich kann es auch auf HTML-Dateien tun, weil ich der Ansicht war, was ich nicht verwenden kann, indexOf() Operation auf HTML-Dateien. –

+0

Sie können die indexOf-Operation für HTML-Dateien verwenden. Sie sind im Wesentlichen reiner Text. Lies es einfach in einem String und suche nach was immer du brauchst. – 11thdimension

Antwort

1

Hier ist ein Beispiel. Es liest die HTML-Datei als Text String und führt dann eine Suche in diesem String durch.

package com.example; 

import java.io.FileInputStream; 
import java.nio.charset.Charset; 

public class SearchTest { 
    public static void main(String[] args) throws Exception { 

     StringBuffer htmlStr = getStringFromFile("test.html", "ISO-8859-1"); 
     boolean isPresent = htmlStr.indexOf("hello") != -1; 

     System.out.println("is Present ? : " + isPresent); 
    } 

    private static StringBuffer getStringFromFile(String fileName, String charSetOfFile) { 
     StringBuffer strBuffer = new StringBuffer(); 
     try(FileInputStream fis = new FileInputStream(fileName)) { 
      byte[] buffer = new byte[10240]; //10K buffer; 
      int readLen = -1; 

      while((readLen = fis.read(buffer)) != -1) { 
       strBuffer.append(new String(buffer, 0, readLen, Charset.forName(charSetOfFile))); 
      } 

     } catch(Exception ex) { 
      ex.printStackTrace(); 
      strBuffer = new StringBuffer(); 
     } 

     return strBuffer; 
    } 
} 
+0

Danke @ 11. Dimension. Obwohl ich mit Ihrem vorherigen Kommentar fortgefahren bin, habe ich die Textdatei einfach durch eine HTML-Datei ersetzt und es funktioniert gut. Aber danke auch für den Code. Für den Moment verwende ich meinen eigenen Code. –

Verwandte Themen