2010-01-23 108 views

回答

7

在Java中有十幾個屏幕抓取庫。只是舉幾例:

  • TagSoup - 用Java編寫的符合SAX的解析器,而不是分析以及組建或有效的XML, 因爲它是在 野外發現解析HTML的 :討厭和殘酷的,雖然相當短,往往是不夠。 TagSoup爲 專爲需要 的人設計,它使用一些 處理這個東西的合理應用 設計。通過提供SAX接口, 它允許將標準XML工具應用於即使是最差的HTML也應用到 。
  • Jericho HTML Parser - 傑里科HTML解析器是一個簡單但功能強大的 java庫,允許分析和 操縱的HTML文檔 ,包括一些常見的 服務器端代碼的部分,當再現 逐字任何無法識別或無效 HTML。它還提供了高級HTML表格操作功能。 t是 既不是事件也不是基於樹的 解析器,而是使用簡單文本搜索的組合 ,高效標籤 識別和標籤位置緩存。 整個源文件 的文本首先被加載到內存中,然後 只搜索 搜索操作的相關字符 的相關段。
  • HTML Cleaner - HtmlCleaner對單個元素進行重新排序,並且 從髒 HTML生成格式良好的XML。它遵循類似的規則,大多數網頁瀏覽器使用 來創建文檔對象模型。 A 用戶可以提供用於標籤過濾和平衡的自定義標籤和規則 。
  • NekoHTML - NekoHTML是一個簡單的HTML掃描儀和標籤平衡器 使應用程序員 解析HTML文檔和訪問使用標準的XML 接口 信息。解析器可以掃描HTML 文件並「修復」人類(和計算機) 作者在編寫HTML 文檔時所犯的許多常見錯誤。 NekoHTML增加了缺失的 父元素;自動關閉帶有可選結束標籤的 元素;和 可以處理不匹配的行內元素 標籤。

還有更多的HTML Screen Scraping Tools written in Java。但是,正如我在this previous answer中提到的那樣,這些是IMO最好的處理任何類型的內容(瞭解所有類型的垃圾)。不過這可能不是問題。

以防萬一,也許檢查線程Nokogiri pure Java status

更新:一個新項目已經被釋放(2010-01-31的),jsoup,它提供了一個selector-syntax to find elements。請參閱其網站以瞭解更多詳情和/或this answer來自其作者。

相關問題