2016-06-25 32 views
0

Ich versuche, einen Dienst, der eine Netscape-Stil Lesezeichen HTML-Export-Datei analysieren und ein mehrdimensionales Array, wo Ordner und Lesezeichen geschachtelt, wie sie wo sind, zu erstellen in der Datei.analysieren Sie eine Netscape-Stil Lesezeichen HTML-Datei in verschachtelte Array

Ich habe einige Bibliotheken gefunden, aber keine von ihnen hält die Ordner und Bookmarsk geschachtelt, oder wenn sie dies tun, geben sie kein Array zurück, sie wiederholen die Zeile 1 nach 1 in der Schleife und ziehen sie entsprechend ein .

Dies ist, was ein Nescape-Stil Lesezeichen exportieren wie folgt aussieht:

<!DOCTYPE NETSCAPE-Bookmark-file-1> 
<!-- This is an automatically generated file. 
    It will be read and overwritten. 
    DO NOT EDIT! --> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> 
<TITLE>Bookmarks</TITLE> 
<H1>Menu des marque-pages</H1> 

<DL><p> 
    <DT><A HREF="place:folder=BOOKMARKS_MENU&folder=UNFILED_BOOKMARKS&folder=TOOLBAR&queryType=1&sort=12&maxResults=10&excludeQueries=1" ADD_DATE="1422119261" LAST_MODIFIED="1422119261">Marqués récemment</A> 
    <DT><A HREF="place:type=6&sort=14&maxResults=10" ADD_DATE="1422119261" LAST_MODIFIED="1422119261">Étiquettes récentes</A> 
    <HR> <DT><H3 ADD_DATE="1422119260" LAST_MODIFIED="1422119260">Mozilla Firefox</H3> 
    <DL><p> 
     <DT><A HREF="https://www.mozilla.org/fr/firefox/help/" ADD_DATE="1422119260" LAST_MODIFIED="1422119260" ICON_URI="http://www.mozilla.org/2005/made-up-favicon/0-1422119260996" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==">Aide et didacticiels</A> 
     <DT><A HREF="https://www.mozilla.org/fr/firefox/customize/" ADD_DATE="1422119260" LAST_MODIFIED="1422119260" ICON_URI="http://www.mozilla.org/2005/made-up-favicon/1-1422119260997" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==">Personnaliser Firefox</A> 
     <DT><A HREF="https://www.mozilla.org/fr/contribute/" ADD_DATE="1422119260" LAST_MODIFIED="1422119260" ICON_URI="http://www.mozilla.org/2005/made-up-favicon/2-1422119260998" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==">Contribuer</A> 
     <DT><A HREF="https://www.mozilla.org/fr/about/" ADD_DATE="1422119260" LAST_MODIFIED="1422119260" ICON_URI="http://www.mozilla.org/2005/made-up-favicon/3-1422119260999" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==">À propos de Mozilla</A> 
    </DL><p> 
    <DT><H3 ADD_DATE="1422119260" LAST_MODIFIED="1422119261" PERSONAL_TOOLBAR_FOLDER="true">Barre personnelle</H3> 
    <DD>Ajoutez des marque-pages dans ce dossier pour les voir apparaître sur votre barre personnelle 
    <DL><p> 
     <DT><A HREF="place:sort=8&maxResults=10" ADD_DATE="1422119261" LAST_MODIFIED="1422119261">Les plus visités</A> 
     <DT><A HREF="https://www.mozilla.org/fr/firefox/central/" ADD_DATE="1422119260" LAST_MODIFIED="1422119260">Débuter avec Firefox</A> 
    </DL><p> 
    <DT><H3 ADD_DATE="1422119260" LAST_MODIFIED="1466788235" UNFILED_BOOKMARKS_FOLDER="true">Marque-pages non classés</H3> 
    <DL><p> 
     <DT><H3 ADD_DATE="1466788235" LAST_MODIFIED="1466788267">Veille</H3> 
     <DL><p> 
      <DT><H3 ADD_DATE="1466788242" LAST_MODIFIED="1466788267">PHP</H3> 
      <DL><p> 
       <DT><A HREF="http://php.net/" ADD_DATE="1466788255" LAST_MODIFIED="1466788255" ICON_URI="http://php.net/favicon.ico" ICON="data:image/png;base64,Qk02AwAAAAAAADYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAADEDgAAxA4AAAAAAAAAAAAAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICA19fX19fX19fXwICAwICAwICAwICAwICAwICAwICA19fX19fX19fXwICAwICAwICA19fXAAAA19fXwICAwICAwICAwICAwICAwICAwICA19fXAAAA19fXwICAwICAwICA19fXAAAA19fX19fXwICAwICA19fXwICAwICA19fX19fXAAAA19fX19fXwICAwICA19fXAAAAAAAAAAAA19fX19fXAAAA19fX19fXAAAA19fXAAAAAAAAAAAA19fX19fX19fXAAAA19fX19fXAAAA19fXAAAA19fX19fXAAAA19fXAAAA19fX19fXAAAA19fX19fXAAAA19fX19fXAAAA19fXAAAA19fX19fXAAAA19fXAAAA19fX19fXAAAA19fX19fXAAAA19fX19fXAAAA19fXAAAA19fX19fXAAAA19fXAAAA19fX19fXAAAA19fX19fXAAAAAAAAAAAA19fX19fXAAAAAAAAAAAA19fX19fXAAAAAAAAAAAA19fX19fXwICA19fX19fX19fXwICA19fXAAAA19fX19fXwICAwICA19fX19fX19fXwICAwICAwICAwICAwICAwICAwICA19fXAAAA19fXwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICA19fX19fX19fXwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICAwICA" LAST_CHARSET="UTF-8">PHP: Hypertext Preprocessor</A> 
       <DD> 
      </DL><p> 
     </DL><p> 
    </DL><p> 
</DL> 

<H3> Ordner sind, sind <a> Lesezeichen

Ich habe keine Ahnung, wie ich anfangen soll. Ich sollte wahrscheinlich eine rekursive Funktion verwenden?

Antwort

0

Ich habe ein kleines Befehlszeilenprogramm mit dem Namen Nebooman geschrieben, das Lesezeichen bereinigen kann. Es liest aus der Netscape-Lesezeichenformatdatei und generiert eine gültige Netscape-Lesezeichenformatdatei. Es ist in Python3 geschrieben. Die Hauptklasse liest Lesezeichen aus einer Datei in eine verschachtelte Struktur. So können Sie Teile des Quellcodes oder create future request zur Verbesserung der Utility-API verwenden.

kann Ihr Code sieht aus wie:

from nebooman import Manager 
import json 

manager = Manager(verbose=True) 
manager.read_bookmarks_file(open('bookmarks.html')) 
print(json.dump(manager.bookmarks))