【问题标题】:Parser for Exported Bookmarks HTML file of Google Chrome and Mozilla in JavaJava 中 Google Chrome 和 Mozilla 的导出书签 HTML 文件的解析器
【发布时间】:2013-02-07 15:45:39
【问题描述】:

如何用 Java 解析从 Google Chrome 和 Mozilla Firefox 导出的书签文件。是否有任何库可以直接解析它们并获取其中的 URL。

也非常欢迎使用 Java 解析它们的示例代码。

【问题讨论】:

  • 书签存储为物理文件..你检查这些文件是否可解析?
  • 是的,导出的文件是一个 html 文件,可以使用 html 解析器对其进行解析。但是我需要一个正确的工作方法来解析 mozilla 和 google chrome。如果有人以前做过,那么这对我来说会更有用,因为他们已经经历了所有错误的可能性。
  • 如果您向我展示带有示例的页面,我可以帮助您编写解析器)解析的主要目的是什么?
  • 我需要解析该 html 文件以获取
    blocks
    标记中的 url
  • @lijojohn 请根据您的评论编辑您的问题。不清楚您的要求是什么

标签: java html parsing google-chrome firefox


【解决方案1】:

在大多数情况下,您实际上并不需要解析 HTML 文件。 Chrome 将其书签存储在 JSON 文件中。使用 JSON 解析器读取该文件要简单得多。

您感兴趣的文件位于(在 Linux 上,无论如何,谷歌搜索其他操作系统):

/home/your_name/.config/google-chrome/Default/Bookmarks

JSON 解析很简单。谷歌一下或者从How to parse JSON in Java开始。

如果您想在开始挖掘 JSON 数据之前对其进行可视化,那么还可以查看 http://chris.photobooks.com/json/default.htm

【讨论】:

  • 谢谢,这很有用。对于 Windows 7,它是 C:\Users\your_name\AppData\Local\Google\Chrome\User Data\Default
【解决方案2】:

根据新发布的 cmets,解决方案是使用 JSOUP 开源程序来执行此操作。 JSOUP 仅接受 HTTP 或 HTTPS 协议,因此您可能希望将导出的书签 HTML 托管在本地服务器(如 tomcat)上并获取它的 DOM

 http://yourip:<port>/<yourProject>/<bookmark.html>. 

JSOUP 是不言自明的。

其他更简单的方法:

Chrome 和 Firefox 书签以 JSON 格式存储,如下所示。

Java 方式:我建议你使用 JSON 来解析这些。根据以下结构创建一个引用 Java 对象。

或者简单地使用 UNIX 命令提示符并执行一个

 grep -i "url" <bookmark file path> | cut -d":" -f2

但是,如果您仍然对 Chrome API 感兴趣,请访问:http://developer.chrome.com/extensions/bookmarks.html

{
   "checksum": "702d8e600a3d70beccfc78e82ca7caba",
   "roots": {
  "bookmark_bar": {
     "children": [ {
        "date_added": "12939920104154671",
        "id": "3",
        "name": "Development/Tutorials/Git/git-svn - KDE TechBase",
        "type": "url",
        "url": "http://techbase.kde.org/Development/Tutorials/Git/git-svn"
     }, {
        "date_added": "12939995405838705",
        "id": "4",
        "name": "QJson - Usage",
        "type": "url",
        "url": "http://qjson.sourceforge.net/usage.html"

【讨论】:

  • 你需要搜索的是使用java进行html解析。使用Web浏览器中提供的导出书签选项来获取示例书签html文件。
【解决方案3】:

这个问题我有点晚了。但如果它仍然相关:我需要做同样的事情(以及其他书签来源:GitHub Stars、Netscape 和 Google 书签)并构建我自己的。你可以从我的 repo 中查看并获取它:https://github.com/IvoLimmen/mystart

【讨论】:

    【解决方案4】:

    如果有人感兴趣:这里有一个 scala sn-p 说明如何处理解析 Chrome 的书签 JSON 文件(虽然没有经过彻底测试,只是为了了解一下):

    import org.json4s.DefaultFormats
    import org.json4s.native.JsonMethods
    import org.junit.Test
    
    class BookmarksImporterTest {
    
      implicit val formats: DefaultFormats.type = DefaultFormats
    
      def analyse(element: Node): List[Node] = {
       element.children.flatMap(c => {
          c.`type` match {
            case Some("folder") => c.children.flatMap(r => analyse(r))
            case Some("url")    => List(c)
            case _              => println("???"); List()
          }
        })
      }
    
      @Test
      def test(): Unit = {
        val source    = scala.io.Source.fromFile("bookmarks.json")
        val json      = JsonMethods.parse(source.reader())
        val bookmarks = json.extract[ChromeBookmarks]
    
        val bms = bookmarks.roots.flatMap {
          case (name, elements) => analyse(elements)
        }
        println("found " + bms.size + " entries")
      }
    
    }
    
    case class ChromeBookmarks(checksum: String, roots: Map[String, Node], version: Int)
    
    case class Node(
        id: Option[String],
        name: Option[String],
        url: Option[String],
        children: List[Node],
        `date-added`: Option[Long],
        `date-modified`: Option[Long],
        `type`: Option[String]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      相关资源
      最近更新 更多