首頁  >  文章  >  web前端  >  htmlParser使用教學課程

htmlParser使用教學課程

黄舟
黄舟原創
2016-12-22 14:44:371641瀏覽

最近在研究lucene的全文檢索,在很多地方需要解析或者說分析Html內容或者Html頁面,Lucene本身的演示程序中也提供了一個Html Parser,

但是不是純Java的解決方案.於是到處搜索,在網路上找到了一個"HTMLParser".

過幾天貼出lucene進行全文檢索的程式碼.(檢索本站的文章等).

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.ParserClass;
importClass;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.
import org.htmlparser.visitors.HtmlPage;
import org.htmlparser.visitors.TextExtractingVisitor;

import com.jscud.util.LogMan; //一個記錄類別

/日誌」 class ParseHtmlTest
{

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

String aFile = "e:/jscud/temp/test.htm";


String content = readFile(a); ;

test1(content);
System.out.println("================================== ==");

test2(content);

System.out.println("============================== ======");

test3(content);
System.out.println("========================== ==========");

test4(content);
System.out.println("====================== ==============");

test5(aFile);
System.out.println("================== ==================");

//訪問外部資源,相對慢
test5("http://www.jscud.com");

System. out.println("====================================");


}

/ **
* 示範了Html Parse的應用.
*

* @author scud http://www.jscud.com

*/

public static void test5(String resource) throws Exception

{
Parser myParser = new Parser(resource);

//設定編碼
myParser.setEncomyParserage"); = new HtmlPage(myParser);

myParser.visitAllNodesWith(visitor);

String textInPage = visitor.getTitle();

System.out.println(textInjage);
public static void test4(String content) throws Exception

{

Parser myParser;

myParser = Parser.createParser(content, "GBK");

HtmlPage visitor = new Hmser。 ;

String。 myParser;

myParser = Parser.createParser(content, "GBK");

TextExtractingVisitor visitor = new TextExtractingVisitor();


myParser.visitAllNodesWith(visitor);

myParser.visitAllNodesWith(visitor);

myParser.visitAllNodesWith(visitor); out.println(textInPage);
}

/**

* 讀取檔案的方式來分析內容.

* filePath也可以是一個Url.

*

* @param resource 檔案/Url

*/

public static void test2(String content) throws ParserException
{

Parser myParser;

serList nodeListception
{
Parser myParser;
serList nodeListception
{
Parser myParser;
serList nodeList content, "GBK");

NodeFilter textFilter = new NodeClassFilter(TextNode.class);
NodeFilter linkFilter = new NodeClassFilter(LinkTag.class);

/Fil/暫時不處理meta

/Tag/Class .class);

OrFilter lastFilter = new OrFilter();

lastFilter.setPredicates(new NodeFilter[] { textFilter, linkFilter });

nodeList = myParser.parse(lastlinkFilter });


nodeList = myParser.parse(lastlinkFilter);

nodeList = myParser.parse(lastlinkFilter); toNodeArray();

for (int i = 0; i {
Node anode = (Node) nodes[i];

String line = "";
if (anode instanceof TextNode)
{

TextNode textnode = (TextNode) anode;

//line = textnode.toPlainTextString().trim();

line = textnode.getText();

}
else if (anode s背= (LinkTag) anode;

line = linknode.getLink();
//@todo 過濾jsp標籤:可以自行實作這個函數

//line = StringFunc.replace(line, "", "");

}

if (isTrimEmpty(line))

continue;

System.out.println(line);

}

}

/**
* 解析普通文字節點.
*
* @param content
* @throws ParserException
*/
public static void test1(String content) throws ParserException
{
Parser myParser;
Node[]nodes = null;

myParser =ser.PcreateParser. = myParser.extractAllNodesThatAre(TextNode.class); //這裡可能會傳送異常

for (int i = 0; i {

TextNode textnode = (TextNode)nodes[i];
String line = textnode.toPlainTextString().trim ( );
if (line.equals(""))
繼續;
System.out.println(line);
}

}

/**

* 讀取一個檔案到字串裡.

*
* @param sFileName 檔案名稱
* @param sEncode String
* @return 檔案內容
*/
public static String read String sEncode)
{
StringBuffer sbStr = new StringBuffer();

try

{

File ff = new File(sFileName);
InputStreamReader read = new InputStreamReader(new FileStream);
InputStreamReader read = new InputStreamReader(newStreamed); new BufferedReader(read);

String dataLine = "";
while (null != (dataLine = ins.readLine()))

{

sbStr.append(dataLine);
sbStrStr.
}

ins.close();
}

catch (異常e)

{
LogMan.error("讀取文字檔案錯誤", e);
}

return sbStr.toString();
/**

* 去掉左右空格後字串是否為空

* @param astr String
* @return boolean

*/

public static boolean isTrimEmpty(String astr)
{
if ((null == astr) || (astr.length() == 0))
{
return true;
return true;
if (isBlank(astr.trim()))
{
return true;
}
return false;
}

/**
* 字串是否為空:null或長度為0.
* @param astr 來源字串.
* @return boolean

*/

public static boolean isBlString( (null == astr) || (astr.length() == 0))
{
return true;
}
else
{
return false;
}
}
}
內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn