我想做一些屏幕抓取,理想情况下使用CSS选择器而不是XPath。是否有类似于Ruby或Python的库?
答案 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。