在研究搜尋引擎的開發中,對於HTML網頁的處理是核心的一個環節。網路上有很多開源的程式碼,對於Java來說,HTMLParser是比較著名並且廣泛應用的一個。 HTMLParser的首頁是http://htmlparser.sourceforge.net/,最後的更新是2006年9月的1.6版。不過沒關係,HTML的內容已經很久沒有太大的改變了,HTMLParser處理起來基本上沒有任何問題。 HTMLParser具有小巧,快速的優點,缺點是相關文件比較少(英文的也少),許多功能需要自己摸索。對於初學者還是要花一些功夫的,而一旦上手以後,會發現HTMLParser的結構設計很巧妙,非常實用,基本你的各種需求都可以滿足。
這裡我根據自己這幾個月來的經驗,寫了一點入門的東西,希望能對新學習HTMLParser的朋友們有所幫助。 (不過當年高考本人語文只比及格高一分,所以文法方面的問題還希望大家多多擔待)
HTMLParser的核心模組是org.htmlparser.Parser類,這個類實際完成了對於HTML頁面的分析工作。這個類別有下面幾個建構子:
public Parser (); public Parser (Lexer lexer, ParserFeedback fb); public Parser (URLConnection connection, ParserFeedback fb) throws ParserException; public Parser (String resource, ParserFeedback feedback) throws ParserException; public Parser (String resource) throws ParserException; public Parser (Lexer lexer); public Parser (URLConnection connection) throws ParserException; 和一个静态类 public static Parser createParser (String html, String charset);
對於大多數使用者來說,使用最多的是透過一個URLConnection或是一個保存有網頁內容的字串來初始化Parser,或是使用靜態函數來產生一個Parser對象。 ParserFeedback的程式碼很簡單,是針對除錯和追蹤分析過程的,一般不需要改變。而使用Lexer則是個相對比較進階的話題,放到以後再討論吧。
這裡比較有趣的一點是,如果需要設定頁面的編碼方式的話,不使用Lexer就只有靜態函數一個方法了。對於大多數中文頁面來說,好像這是應該用得比較多的方法。
下面是初始化Parser的例子。
/** * @author www.baizeju.com */ package com.baizeju.htmlparsertester; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.FileInputStream; import java.io.File; import java.net.HttpURLConnection; import java.net.URL; import org.htmlparser.visitors.TextExtractingVisitor; import org.htmlparser.Parser; /** * @author www.baizeju.com */ public class Main { private static String ENCODE = "GBK"; private static void message( String szMsg ) { try{ System.out.println(new String(szMsg.getBytes(ENCODE), System.getProperty("file.encoding"))); } catch(Exception e ){} } public static String openFile( String szFileName ) { try { BufferedReader bis = new BufferedReader(new InputStreamReader(new FileInputStream( new File(szFileName)), ENCODE) ); String szContent=""; String szTemp; while ( (szTemp = bis.readLine()) != null) { szContent+=szTemp+"/n"; } bis.close(); return szContent; } catch( Exception e ) { return ""; } } public static void main(String[] args) { String szContent = openFile( "E:/My Sites/HTMLParserTester.html"); try{ //Parser parser = Parser.createParser(szContent, ENCODE); //Parser parser = new Parser( szContent ); Parser parser = new Parser( (HttpURLConnection) (new URL("http://127.0.0.1:8080/HTMLParserTester.html")).openConnection() ); TextExtractingVisitor visitor = new TextExtractingVisitor(); parser.visitAllNodesWith(visitor); String textInPage = visitor.getExtractedText(); message(textInPage); } catch( Exception e ) { } } }
加重的部分測試了幾種不同的初始化方法,後面的顯示了結果。大家看到能Parser出內容就可以了,如何操作訪問Parser的內容我們在後面討論。
以上就是HTMLParser使用詳解(1)的內容,更多相關內容請關注PHP中文網(www.php.cn)!

本篇文章带大家了解一下HTML(超文本标记语言),介绍一下HTML的本质,HTML文档的结构、HTML文档的基本标签和图像标签、列表、表格标签、媒体元素、表单,希望对大家有所帮助!

不算。html是一种用来告知浏览器如何组织页面的标记语言,而CSS是一种用来表现HTML或XML等文件样式的样式设计语言;html和css不具备很强的逻辑性和流程控制功能,缺乏灵活性,且html和css不能按照人类的设计对一件工作进行重复的循环,直至得到让人类满意的答案。

总结了一些web前端面试(笔试)题分享给大家,本篇文章就先给大家分享HTML部分的笔试题(附答案),大家可以自己做做,看看能答对几个!

在html中,document是文档对象的意思,代表浏览器窗口的文档;document对象是window对象的子对象,所以可通过“window.document”属性对其进行访问,每个载入浏览器的HTML文档都会成为Document对象。

HTML5中画布标签是“<canvas>”。canvas标签用于图形的绘制,它只是一个矩形的图形容器,绘制图形必须通过脚本(通常是JavaScript)来完成;开发者可利用多种js方法来在canvas中绘制路径、盒、圆、字符以及添加图像等。

html5废弃了dir列表标签。dir标签被用来定义目录列表,一般和li标签配合使用,在dir标签对中通过li标签来设置列表项,语法“<dir><li>列表项值</li>...</dir>”。HTML5已经不支持dir,可使用ul标签取代。

3种取消方法:1、给td元素添加“border:none”无边框样式即可,语法“td{border:none}”。2、给td元素添加“border:0”样式,语法“td{border:0;}”,将td边框的宽度设置为0即可。3、给td元素添加“border:transparent”样式,语法“td{border:transparent;}”,将td边框的颜色设置为透明即可。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版