可能我們在項目中常用Dom解析html,但是以下介紹的解析器可能會讓你更簡單、容易去解析html。另外javaweb中常用的dom解析是dom4j, 它在web領域中地王道;android中我們常用的是sax、pull。因為它們更省記憶體。因為不需要將整個XML樹讀入記憶體後再進行處理,而是通過輸入資料流的方式進行,在這過程中會觸發相關事件........在這些事件回調中我們去做解析工作。
1、jsoup 是一款 Java 的HTML 解析器,可直接解析某個URL地址、HTML常值內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於JQuery的操作方法來取出和操作資料。據說它是基於MIT協議發布的。
線上文檔:http://www.osctools.net/apidocs/apidoc?api=jsoup-1.6.3;http://jsoup.org/
jsoup的主要功能如下: 從一個URL,檔案或字串中解析HTML; 使用DOM或CSS選取器來尋找、取出資料; 可操作HTML元素、屬性、文本;
範例程式碼: Document doc = Jsoup.parse(input, "UTF-8", " http://www.dangdang.com");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
2、htmlparser是一個純的java寫的html解析的庫,它不依賴於其它的java庫檔案,主要用於改造或提取html。它能超高速解析html,而且不會出錯。現在htmlparser最新版本為2.0。 據說htmlparser就是目前最好的html解析和分析的工具。 無論你是想抓取網頁資料還是改造html的內容,用了htmlparser絕對會忍不住稱讚。 線上文檔: http://www.osctools.net/apidocs/apidoc?api=HTMLParser; http://htmlparser.sourceforge.net/project-info.html
範例程式碼:
Parser parser = new Parser (" http://www.dangdang.com");
NodeList list = parser.parse (null);
Node node = list.elementAt (0);
NodeList sublist = node.getChildren ();
System.out.println (sublist.size ());
當然,除了這兩個還有NekoHTML、 JTidy、 HtmlCleaner等等。另外在C++中的有htmlcxx。