開源Html分析器解析庫對比
幾乎所有已知的HTML解析器都是實現W3C DOM API(JAXP的API一部分,用於XML處理),並給你一個org.w3c.dom.Document,便於透過JAXP API直接使用。主要的區別通常是是否能分析有問題的html。大多數解析器是在一定程度上都寬容非結構非完整的HTML,如JTidy,NekoHTML,TagSoup和HtmlCleaner。您通常可以使用這種型別的HTML解析器對付比較“整潔”的HTML源,這樣就可以使用W3C DOM和 JAXP API.
NekoHTML:
TagSoup:
jTidy:
HtmlCleaner:
用以上程式碼做測試抓取文件html中連結標籤,贏家是HtmlCleaner,它快速和容易實現。一個缺點HtmlCleaner是,它不提供一個Maven倉庫。
HtmlUnit
HtmlUnit使您能夠像一個在WebBrowser裡面程式設計。輸入表單的值,單擊按鈕,呼叫JavaScript等等。它不只是一個HTML解析器。是一個真正的“圖形介面的web瀏覽器”和HTML的單元測試工具。
Jsoup:
提供一個完全自己的API。它給你像使用jQuery般的CSS選擇器,並提供了一個靈活的API來遍歷HTML DOM樹來獲得感興趣的內容。
HTML DOM樹的遍歷是Jsoup的主要特徵。有過org.w3c.dom.Document打交道的人知道這是多麼痛苦的地獄,可以使用jsoup詳細的NodeList和節點API來遍歷DOM。當然,XPath的使生活更輕鬆,但是它難以學習。
如果你想從通常的現實世界HTML中提取特定資料,Jsoup是選擇。
詳細見:http://jsoup.org/cookbook/extracting-data/attributes-text-html
NekoHTML:
final DOMParser parser = new DOMParser(); try { parser.parse(new InputSource(urlIS)); document = parser.getDocument(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } <p class="indent"> |
TagSoup:
final Parser parser = new Parser(); SAX2DOM sax2dom = null; try { sax2dom = new SAX2DOM(); parser.setContentHandler(sax2dom); parser.setFeature(Parser.namespacesFeature, false); parser.parse(new InputSource(urlIS)); } catch (Exception e) { e.printStackTrace(); } document = sax2dom.getDOM(); <p class="indent"> |
jTidy:
final Tidy tidy = new Tidy(); tidy.setQuiet(true); tidy.setShowWarnings(false); tidy.setForceOutput(true); document = tidy.parseDOM(urlIS, null); <p class="indent"> |
HtmlCleaner:
final HtmlCleaner cleaner = new HtmlCleaner(urlIS); try { cleaner.clean(); document = cleaner.createDOM(); } catch (Exception e) { e.printStackTrace(); } <p class="indent"> |
用以上程式碼做測試抓取文件html中連結標籤,贏家是HtmlCleaner,它快速和容易實現。一個缺點HtmlCleaner是,它不提供一個Maven倉庫。
HtmlUnit
HtmlUnit使您能夠像一個在WebBrowser裡面程式設計。輸入表單的值,單擊按鈕,呼叫JavaScript等等。它不只是一個HTML解析器。是一個真正的“圖形介面的web瀏覽器”和HTML的單元測試工具。
Jsoup:
提供一個完全自己的API。它給你像使用jQuery般的CSS選擇器,並提供了一個靈活的API來遍歷HTML DOM樹來獲得感興趣的內容。
HTML DOM樹的遍歷是Jsoup的主要特徵。有過org.w3c.dom.Document打交道的人知道這是多麼痛苦的地獄,可以使用jsoup詳細的NodeList和節點API來遍歷DOM。當然,XPath的使生活更輕鬆,但是它難以學習。
如果你想從通常的現實世界HTML中提取特定資料,Jsoup是選擇。
String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>"; Document doc = Jsoup.parse(html); Element link = doc.select("a").first(); String text = doc.body().text(); // "An example link" String linkHref = link.attr("href"); // "http://example.com/" String linkText = link.text(); // "example"" String linkOuterH = link.outerHtml(); // "<a href="http://example.com"><b>example</b></a>" String linkInnerH = link.html(); // "<b>example</b>" <p class="indent"> |
詳細見:http://jsoup.org/cookbook/extracting-data/attributes-text-html
相關文章
- 開源深度學習庫對比總結深度學習
- 開源OCR模型對比模型
- 開源加密解密庫比較加密解密
- 三款開源關係型資料庫對比:MySQL、PostgreSQL、SQLiteXP資料庫MySqlSQLite
- (轉)開源IT監控系統對比
- 開源閉源專案程式碼質量對比
- 【HTML與XML的對比】HTMLXML
- OkHttp 開源庫使用與原始碼解析HTTP原始碼
- Android開源庫——EventBus原始碼解析Android原始碼
- 【移動開發】Checkout開源庫原始碼解析移動開發原始碼
- 7 個開源資料庫利弊對比,哪款才最適合你?資料庫
- 幾種開源富文字編輯器對比
- 程式碼質量對比:開源專案 vs 閉源專案
- Everything is Serverless,從開源框架對比說起Server框架
- 開源雲原生平臺對比 KubeSphere vs RainbondAI
- 記憶體資料庫解析與主流產品對比(三)記憶體資料庫
- 記憶體資料庫解析與主流產品對比(二)記憶體資料庫
- 記憶體資料庫解析與主流產品對比(一)記憶體資料庫
- Gartner對開源資料庫的研究(轉)資料庫
- 去O路上的歷程--開源分散式資料庫產品對比(TBase VS AntDB)分散式資料庫
- 文字識別OCR開源框架的對比--Tesseract vs EasyOCR框架
- 開源驅動的飛躍:Fedora 19、20效能對比
- Linux 高可用開源方案 Keepalived VS Heartbeat對比Linux
- 對比學習 ——simsiam 程式碼解析。
- JAVA集合:HashMap深度解析(版本對比)JavaHashMap
- 大咖說·對話開源|企業如何用好開源資料庫資料庫
- 開源向量資料庫比較:Chroma, Milvus, Faiss,Weaviate資料庫AI
- 推薦一個markdown格式轉html格式的開源JavaScript庫HTMLJavaScript
- 常見開源分散式檔案系統架構對比分散式架構
- 為什麼Flash不支援Linux對開源比較好?Linux
- jQuery中empty與html("")的區別對比jQueryHTML
- JAVA集合:ConcurrentHashMap深度解析(版本對比)JavaHashMap
- 【為生活開發系列之五】開源Android福彩號碼對比助手Android
- HTML解析HTML
- 一起玩轉開源資料庫!OceanBase DevCon 之開源生態全景解析資料庫dev
- 我們對“開源”的力量一無所知,卻又無比期待。
- 瞭解開源協議:常用開源協議解析協議
- 開源介面庫