BeautifulSoup abspeichern

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Donnerstag 10. Juli 2008, 23:45

Hallo,
Ich habe ein kleines Problem. Ich probiere eine große TiddlyWiki von mir erst mit BeautifulSoup zu bearbeiten und dann wieder abzuspeichern.

Code: Alles auswählen

...

tiddlywiki = file(path + filename, 'w')
tiddlywiki.write(str(self.tiddlywiki))
tiddlywiki.close()

...
Ja dieser Code Schnippsel ist Teil einer Klasse, er hat Sinn ;).

Das Problem ist:
Nachdem abspeichern ist das Dokument nicht mehr so groß wie vorher und wird auch nach dem öffnen gar nicht mehr im Browser (Firefox) dargestellt.

Vorher: 449,3 kb
Nachher: 351,9 kb

Hat jemand eine Idee?

MfG,
CracKPod
---
http://crackpod.pytalhost.com/
BlackJack

Freitag 11. Juli 2008, 09:30

Schau doch einfach mal, was sich verändert hat.
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Freitag 11. Juli 2008, 12:33

Naja bei einer Datei mit 12.000 Zeilen ist das nicht ganz so einfach wie gesagt.
Habe es dann aber herrausgefunden, BeautifulSoup probiert anscheinend den Code zu "cleanen" das zerstört aber leider die ganze TiddlyWiki, und nach der Dokumentation her gibt es nur einen Weg das zu korrigieren: RegEx.

Aber ich schreibe sicher nicht mehrere hunderte RegEx für ein 12.000 Zeilen langes Dokument :roll: .

Ich denke ich werde dann einfach den Teil der editierten Einträge in der TiddlyWiki aus dem Source kopieren und diesen Teil manuell mit der alten TiddlyWiki ersetzen. Das geht da BeautifulSoup keine Korrigierungen an der "Tiddler-Storearea" macht. Ist ein bisschen schwer zu verstehen wenn man sich nicht mit der TiddlyWiki befasst hat bzw. mit ihrem Source.

Kennt jemand eventuell noch ne andere Möglichkeit? Sowas wie BeautifulSoup was sich einigermaßen so gut benutzen lässt und den Code nicht so zerstört?

Es gibt da doch einige build-ins aber ich weiß nicht welches ich am besten dafür benutzen sollte.

MfG,
CracKPod

---
http://crackpod.bplaced.net/
lunar

Freitag 11. Juli 2008, 13:09

Crazed hat geschrieben:Kennt jemand eventuell noch ne andere Möglichkeit? Sowas wie BeautifulSoup was sich einigermaßen so gut benutzen lässt und den Code nicht so zerstört?
lxml.html wäre einen Versuch wert. Es ist zudem schneller und speicherschonender, und hat die bessere API imho.

Allerdings nutzt TiddlyWiki viel JavaScript, an Informationen im JavaScript-Code wirst du mit einem HTML-Scraper nicht heran kommen, und ich weiß nicht, inwiefern lxml.html Script-Tags bei der Re-Serialisierung bewahrt.
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Freitag 11. Juli 2008, 13:53

Hey,

wenn ich probiere lxml via easy_install zu installieren bekomme ich folgendes:
Using build configuration of libxslt
Searching for lxml
Reading http://pypi.python.org/simple/lxml/
Reading http://codespeak.net/lxml
Best match: lxml 2.1
Downloading http://codespeak.net/lxml/lxml-2.1.tgz
Processing lxml-2.1.tgz
Running lxml-2.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-elueNo/lxml-2.1/egg-dist-tmp-GDj5fP
Building lxml version 2.1.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' needs to be available.
ERROR: /bin/sh: xslt-config: not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
Und dann am ende bricht es ab mit:

...
src/lxml/lxml.etree.c:122018: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122033: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122048: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122063: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122078: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122093: Fehler: expected »)« before »*« token
error: Setup script exited with error: command 'gcc' failed with exit status 1
Kannst du mir helfen?

EDIT:
Habe gerade auch noch libxslt1-dev installiert damit ich xslt-config bekomme, hat aber nichts gebracht.

Bekomme jetzt aber nur noch folgende Meldung:
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' needs to be available.
Using build configuration of libxslt 1.1.22
Building against libxml2/libxslt in the following directory: /usr/lib
lunar

Freitag 11. Juli 2008, 14:02

Crazed hat geschrieben:EDIT:
Habe gerade auch noch libxslt1-dev installiert damit ich xslt-config bekomme, hat aber nichts gebracht.

Bekomme jetzt aber nur noch folgende Meldung:
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' needs to be available.
Using build configuration of libxslt 1.1.22
Building against libxml2/libxslt in the following directory: /usr/lib
Für mich sieht das nach einer erfolgreichen Installation aus. Ist das die gesamte Ausgabe? Ist "lxml.html" jetzt importierbar?
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Freitag 11. Juli 2008, 14:06

Nein:
ieser Funktion)
src/lxml/lxml.etree.c:121702: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121703: Fehler: »__pyx_m« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c: Auf höchster Ebene:
src/lxml/lxml.etree.c:121726: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:121747: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »*« token
src/lxml/lxml.etree.c:121790: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »*« token
src/lxml/lxml.etree.c:121810:21: Fehler: compile.h: No such file or directory
src/lxml/lxml.etree.c:121811:25: Fehler: frameobject.h: No such file or directory
src/lxml/lxml.etree.c:121812:23: Fehler: traceback.h: No such file or directory
src/lxml/lxml.etree.c: In Funktion »__Pyx_AddTraceback«:
src/lxml/lxml.etree.c:121815: Fehler: »PyObject« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121815: Fehler: »py_srcfile« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121815: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121816: Fehler: »py_funcname« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121816: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121817: Fehler: »py_globals« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121817: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121818: Fehler: »empty_string« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121818: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121819: Fehler: »PyCodeObject« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121819: Fehler: »py_code« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121819: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121820: Fehler: »PyFrameObject« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121820: Fehler: »py_frame« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121820: Fehler: Ungültige Operanden für binäres *
src/lxml/lxml.etree.c:121843: Fehler: »__pyx_m« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121860: Fehler: »__pyx_empty_tuple« nicht deklariert (erste Benutzung in dieser Funktion)
src/lxml/lxml.etree.c:121878: Fehler: Anfrage nach Element »f_lineno« in etwas, was keine Struktur oder Variante ist
src/lxml/lxml.etree.c: Auf höchster Ebene:
src/lxml/lxml.etree.c:121890: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:121899: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:121905: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »__pyx_PyInt_AsLongLong«
src/lxml/lxml.etree.c:121921: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »__pyx_PyInt_AsUnsignedLongLong«
src/lxml/lxml.etree.c:121943: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:121958: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:121973: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:121988: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122003: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122018: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122033: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122048: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122063: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122078: Fehler: expected »)« before »*« token
src/lxml/lxml.etree.c:122093: Fehler: expected »)« before »*« token
error: Setup script exited with error: command 'gcc' failed with exit status 1
Das sind die Errors. Das heißt beim starten wird nur der erwähnte text angezeigt aber wenns dann installiert erscheinen diese Fehler.

MFG;
CracKPod

Ubuntu 8.04
lunar

Freitag 11. Juli 2008, 14:13

Grundsätzlich wäre es erstmal empfehlenswert, die ganze Fehlermeldung zu posten, und die entscheidenden Fehler nicht erst auf Nachfrage zu präsentieren.

Sind libxslt-dev und python-dev installiert? Hast du mal versucht, cython zu installieren?
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Freitag 11. Juli 2008, 14:19

Wenn ich die ganze Fehlermeldung posten würde dann würde es das Layout des Forums sprengen wenn nicht sogar mehr, da sie schätzungsweise ca. 3000 Zeilen lang ist -.-.

Es ging aber nachdem ich python-dev installiert hate.

Ist das einfach ein Package das die Source Dateien von python irgendwohin ablegt so das andere Programme darauf Zugriff haben?

*Ist noch ziemlich neu in Sachen Linux*
lunar

Freitag 11. Juli 2008, 14:43

Crazed hat geschrieben:Wenn ich die ganze Fehlermeldung posten würde dann würde es das Layout des Forums sprengen wenn nicht sogar mehr, da sie schätzungsweise ca. 3000 Zeilen lang ist -.-.
http://paste.pocoo.org/
Ist das einfach ein Package das die Source Dateien von python irgendwohin ablegt so das andere Programme darauf Zugriff haben?
So ungefähr: Es installiert die Header-Dateien, die zum Kompilieren gegen die C-API benötigt werden.
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Freitag 11. Juli 2008, 22:02

Danke für die Antworten.
Antworten