Im Kern muss man eine Überschrift oder einen Text auf der Seite mit einem Anker der Form
<a name="NAME_DES_ANKERS">TEXT_ZUM_ANKER</a>
versehen, den man anschließend direkt ansteuern kann und zwar in der Form:
http://www...de/seite.html#NAME_DES_ANKERS
Ich habe jetzt für meine Indexseite einen Parser erstellt, der auf den Seiteninhalt in einer Textdatei zugreift und die Seite um die Anker ergänzt. Schöner wäre sicherlich, wenn das Skript direkt auf die Indexseite zugreifen und die nötigen Änderungen dort direkt vornehmen und speichern könnte.
Das Skript in der aktuellen Fassung:
liste = [] item = "" with open("indexseite.txt") as f: for line in f: if item != "": line = item + line liste.append(line.replace("\n","")) item = "" elif line.startswith("<h2>"): item = line else: liste.append(line.replace("\n","")) for item in liste: if item.startswith("<h2>"): ''' da soll ein Anker rein! http://de.selfhtml.org/html/verweise/projektintern.htm#anker z. B. <h2><a name="kapitel2">Kapitel 2</a></h2> also Element zwischen den h2-Tags ermitteln und daraus den Anker basteln... ''' # <h2>Ziel</h2> ziel = item.rsplit("<") # ['', 'h2>A', '/h2>'] ziel = ziel[1].split(">") # ['h2', 'A'] ziel = ziel[1] # 'A' zeile = '<h2><a name="{0}">{0}</a></h2>\n'.format(ziel) else: zeile = item + "\n" with open("zieldatei.txt","a") as g: print(zeile) g.write(zeile)Das Skript funktioniert und speichert in die zieldatei.txt die gewünschten Inhalte. Ein weiteres Skript erzeugt ein Inhaltsverzeichnis, das ich oben auf der Seite einfügen kann. Da bereits alle Buchstaben angelegt sind, muss ich nicht erst prüfen, ob die Buchstaben auf der Seite vorhanden sind.
import string def inhaltsverzeichnis_erzeugen(): ''' Die Links haben die Form http://pixewakb.blogspot.de/p/index.html#C ''' abc = string.ascii_uppercase url = '{0}' for a in abc: print(url.format(a), end=" • " if not a == abc[-1] else "") inhaltsverzeichnis_erzeugen()Wünschenswert wäre noch ein Zurücklink bei jedem Anker, aber erst einmal läuft das so.
Nachtrag 2. Februar 2013
Ich habe gerade manuell einen Anker auf der Seite ergänzt und die Links in den Überschriften dahingehend angepasst, dass die Links jetzt auf diesen Seitenkopf-Anker verweisen. Anscheinend ändert blogger.com die Links der Anker auf die Blog-ID um, was zu Fehlern führt. Das Skript müsste das noch beachten...
Keine Kommentare:
Kommentar veröffentlichen