我想做一些屏幕抓取,理想情况下使用CSS选择器而不是XPath。有没有类似Ruby或Python的库?是否有类似于Java的lxml或nokogiri的库?
9
A
回答
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来自其作者。
1
您可以通过jRuby使用hpricot。有关详细信息,请参阅this SO question。
相关问题
- 1. Python是否有类似于Java的System.arraycopy?
- 2. Flex是否有类似于jQuery的库?
- 3. 是否有类似于Java中的pyparsing的库?
- 4. 是否有类似于<stdio.h>的java库/包?
- 5. Java库或类似于scipy.optimize.minimize()的函数?
- 6. 是否有类似于Java中
- 7. 的Java ODRPACK(或类似)库
- 8. 是否有类似Python的urllib2的库?
- 9. jQuery是否有类似于:any或:matches伪类的内容?
- 10. IE是否支持indexedDB,WebSQL或类似于SQLite的数据库?
- 11. Scala/java是否有类似Python的StringIO?
- 12. asp.net中是否有类似java的servlet
- 13. 是否有类似rubygems.org的scala库
- 14. 是否有类似于PdfReader的WordReader?
- 15. 是否有类似于“with”的功能?
- 16. angularjs是否有类似于jQuery的ajaxSetup?
- 17. 是否有类似于SMS的扩展?
- 18. 是否有类似于OnOrientationChanged的方法?
- 19. iOS是否有类似于Android的RecyclerView?
- 20. 是否有类似于hg/Mercurial的repo或git-repo的工具?
- 21. 在java中是否有类似于swift的dynamicType的关键字
- 22. 是否有.NET WPF中的控件类似于Java的javax.swing.Box Strut?
- 23. 是否有类似于Java/C++的for循环的Ruby版本?
- 24. 是否有类似于mysql的sqlsrv库的函数mysql_real_escape_string?
- 25. 是否有类似于Android的Three20 Project的库?
- 26. Java中是否有水平线类,类似于Point/Rectangle类?
- 27. 在C++(或C++ 11)中是否有类似于c#的东西?
- 28. 是否有与C++类似的功能Java库?
- 29. 是否有类似于appfuse的java web应用程序模板?
- 30. 是否有类似于GroovyConsole的Java控制台/编辑器?