是否有类似于Java的lxml或nokogiri的库?

时间:2010-01-23 10:07:39

标签: java screen-scraping

我想做一些屏幕抓取,理想情况下使用CSS选择器而不是XPath。是否有类似于Ruby或Python的库?

2 个答案:

答案 0 :(得分:7)

用Java编写了十几个屏幕抓取库。仅举几例:

  
      
  • TagSoup - 用Java编写的兼容SAX的解析器   解析格式良好或有效的XML,   解析HTML中的HTML   狂野:讨厌和野蛮,虽然相当   往往远远不够。 TagSoup是   专为必须的人设计   使用一些来处理这些东西   相似的理性应用   设计。通过提供SAX接口,   它允许标准的XML工具   甚至应用于最糟糕的HTML。
  •   
  • Jericho HTML Parser - Jericho HTML Parser简单但功能强大   java库允许分析和   操纵HTML的各个部分   文件,包括一些常见的   服务器端标签,再现时   逐字记录任何未识别或无效的   HTML。它还提供高级HTML   表格操纵功能。是   既不是事件也不是基于树的   解析器,而是使用组合   简单的文本搜索,高效的标签   识别和标记位置缓存。   整个源文档的文本   首先加载到内存中,然后   仅搜索相关的细分   对于每个人的相关人物   搜索操作。
  •   
  • HTML Cleaner - HtmlCleaner重新排序个别元素和   从dirty生成格式良好的XML   HTML。它遵循类似的规则   大多数网络浏览器都按顺序使用   创建文档对象模型。一个   用户可以提供自定义标签和规则   设置标签过滤和平衡。
  •   
  • 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

答案 1 :(得分:1)

您可以通过jRuby使用hpricot。有关详细信息,请参阅this SO question