parsen oder filtern

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Mittwoch 30. April 2008, 18:14

Das geht etwa so, mit lxml 2.0.3 und html5lib r1147 (da 0.10 noch nicht mit lxml 2 tut):
jetzt google ich bestimmt schon 2h nach dieser versionsnummer: r1147, finde aber nur die 0.10-2, die ja dann nicht paßt, die ich momentan auch installiert habe. hatte sie als .deb nachinstalliert. wo kriege ich die denn her? muß ja kein .deb paket sein, nen py setup reicht ja auch. nach einer hompage hatte ich auch schon vercusht zu suchen, aber finde leider nicht :(
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 30. April 2008, 18:52

Homepage, unter Source gibt es auch eine Anleitung, wie du einen SVN Checkout herbekommst.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Mittwoch 30. April 2008, 19:14

genau, auf der seite war ich auch schon, und gerade jetzt verläßt mich mein synaptic, aptitude und auch apt-get um den svn krämpel zu installieren :( gibts auf die schnelle keine andere möglichkeit?
by the way, hatte mir auch heute BeautifulSoup mal angeschaut. da muß ich allerdings sagen, das dein code verständlicher war, deshalb würde ich auch gerne dabei bleiben. hätte nicht gedacht, das das svn so ne arbeit ist ( habe ich noch nie gebraucht ).
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 30. April 2008, 19:22

The Hit-Man hat geschrieben:genau, auf der seite war ich auch schon, und gerade jetzt verläßt mich mein synaptic, aptitude und auch apt-get um den svn krämpel zu installieren :(
Wo ist denn das Problem? ``aptitude install subversion``
The Hit-Man hat geschrieben:by the way, hatte mir auch heute BeautifulSoup mal angeschaut.
Damit ists auch möglich, allerdings verhält sich BeautifulSoup meiner meinung nach manchmal etwas seltsam, daher hab ich diesmal auf html5lib und lxml zurückgegriffen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Donnerstag 1. Mai 2008, 08:05

Wo ist denn das Problem? ``aptitude install subversion``
die server hatten nicht geantwortet. bekam immer nen timeout. jetzt scheint es wieder zu gehen. habs mal installiert, wie gesagt, noch nie gebraucht, aber werde das wohl hinbekommen. bin mal gespannt, wie und was ich dann da runter bekomme.

heißt das nicht apt-get install subversion ;)?

*EDIT*
habe alles runterbekommen und ließ sich auch installieren, war nen setup.py dabei.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 1. Mai 2008, 09:20

The Hit-Man hat geschrieben:heißt das nicht apt-get install subversion ;)?
Nein, da zumindest momentan Aptitude besser ist - es speichert mehr Metadaten, unter anderem auch die automatisch installierten Pakete um die Dependencies zu erfüllen und kann diese dann auch deinstallieren, wenn sie nicht mehr gebraucht werden. apt-get habe ich seit Debian 3.0 "Woody" (ca. 2003) nicht mehr benutzt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Donnerstag 1. Mai 2008, 09:24

Leonidas hat geschrieben:
The Hit-Man hat geschrieben:heißt das nicht apt-get install subversion ;)?
Nein, da zumindest momentan Aptitude besser ist - es speichert mehr Metadaten, unter anderem auch die automatisch installierten Pakete um die Dependencies zu erfüllen und kann diese dann auch deinstallieren, wenn sie nicht mehr gebraucht werden.
Müsste das apt-get nicht auch machen? Zumindest gibt es ein ``apt-get autoremove``, und die man-Page spuckt dazu ``autoremove is used to remove packages that were automatically installed to satisfy dependencies for some package and that are no more needed.`` aus.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 1. Mai 2008, 09:31

Trundle hat geschrieben:
Leonidas hat geschrieben:
The Hit-Man hat geschrieben:heißt das nicht apt-get install subversion ;)?
Nein, da zumindest momentan Aptitude besser ist - es speichert mehr Metadaten, unter anderem auch die automatisch installierten Pakete um die Dependencies zu erfüllen und kann diese dann auch deinstallieren, wenn sie nicht mehr gebraucht werden.
Müsste das apt-get nicht auch machen?
Habe nachgeschaut, ab Ubuntu 6.10 scheint apt-get das auch zu können. Aptitude hat aber noch zusätzlich den Vorteil der IMHO recht gelungenen ncurses-GUI. Siehe auch AptitudevsAptGet.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Donnerstag 1. Mai 2008, 13:18

jo, apt-get kümmert sich auch abhängigkeiten. ganz früher hatte ich dselect benutzt ( weiß gar nicht, ob das noch dabei ist ), gibt ja auch noch synaptic, was eigentlich auch ganz gut gemacht ist, wenn man die komandozeile nicht mag ( ich mag sie jedoch ). das apt-get, gibts ja mitlerweile für fast alles distris, auch für die, die eigentlich rpm ( sprich suse, mandriva usw. ) oder tgz ( sprich slackware, zenwalk usw. ) benutzen.
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Donnerstag 1. Mai 2008, 13:36

hmmmm, funtzt immer noch nicht :( habe alles installiert und deinen code genommen:

Code: Alles auswählen

import html5lib
from html5lib import treebuilders
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder('lxml'))
f = open('olg.html')
doc = parser.parse(f)
f.close()
image = doc.findall("//*img[@src='http://image.onlineglueck.de/neu/main/mini_shortmessage.gif']")[0]
parent = image.getparent()
number = parent.getnext()
print number.text
python-lxml ist bei mir, mit version 1.3.6-1 installiert. also brauche ich diese version python-lxml 2.0.3, denke ich?

bekomme jetzt das ausgespuckt:

Code: Alles auswählen

hitman@nexus-ii:~/python/WebOLG$ python test.py 
/usr/lib/python2.5/site-packages/html5lib/treebuilders/etree_lxml.py:29: DataLossWarning: lxml does not preserve doctype case
  warnings.warn("lxml does not preserve doctype case", DataLossWarning)
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    image = doc.findall("//*img[@src='http://image.onlineglueck.de/neu/main/mini_shortmessage.gif']")[0]
  File "etree.pyx", line 1378, in etree._ElementTree.findall
  File "etree.pyx", line 1085, in etree._Element.findall
  File "/usr/lib/python2.5/site-packages/lxml/_elementpath.py", line 193, in findall
    return _compile(path).findall(element)
  File "/usr/lib/python2.5/site-packages/lxml/_elementpath.py", line 171, in _compile
    p = Path(path)
  File "/usr/lib/python2.5/site-packages/lxml/_elementpath.py", line 88, in __init__
    "expected path separator (%s)" % (op or tag)
SyntaxError: expected path separator (img)
hitman@nexus-ii:~/python/WebOLG$ 
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 1. Mai 2008, 13:51

Ja, du brauchst lxml 2. Ansonsten kannst du den Baum auch anders durchlaufen, mit simplerem XPath oder per Hand. Ich find jedoch die Query-Sprachen schneller.

Überigens man kann auch statt dem XPath:

Code: Alles auswählen

image = doc.findall("//*img[@src='http://image.onlineglueck.de/neu/main/mini_shortmessage.gif']")[0]
auch CSS Selectors nutzen:

Code: Alles auswählen

from lxml.cssselect import CSSSelector
image = CSSSelector("img[src$='mini_shortmessage.gif']")(doc)[0]
Da kommt dann gleich jQuery-Feeling auf :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Donnerstag 1. Mai 2008, 21:31

hat alles dann doch so weit geklappt ;) hatte mir noch easy_install installiert, und für das lxml , mußte dann noch das .egg gebaut werden. hatte ich dann auch hin bekommen. mensch das das alles so ne arbeit ist, hätte ich dann doch nicht gedacht :( jetzt ist so weit alles fertig und bekomme probleme mit wxglade *argh*
das formular ist fertig ( erstellt mit wxglade ), doch bei dem tool, haste ja kein wxtimer, den es unter boa-constructor dabei wäre ( unter boa-constructor ist der form designer müll :( ). ich brauche ja den timer, um die seite interval-mäßig abzufragen. man man man. warum gibts nicht eine vernünftige IDE, wo so nen richtiger fenster designer dabei ist? ich würde da echt auch nen paar euros springen lassen.
jetzt stehe ich da und habe keinen vernünftigen fenster designer, womit ich um das tool, nen fenster basteln kann :( obwohl ich auf wxwidgets im anderen thread die hand drauf gelegt habe :( *grummel*

@Leonidas
wie machst du deine fenster und in welcher IDE programmierst du? sag jetzt bitte nicht, du codest im emacs, oder der gleichen :(

Edit (Leonidas): Restliche Diskussion in "GUI Builder" abgetrennt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 2. Mai 2008, 10:10

Hier noch eine Alternativversion mit cElementTree.

Code: Alles auswählen

import html5lib
from html5lib import treebuilders
from xml.etree import cElementTree
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder('etree', cElementTree))
f = open('olg.html')
doc = parser.parse(f)
f.close()
containing = doc.findall(".//tr")[21]
number = containing.getchildren()[1]
print number.text
Ist aber wegen dem festverdrahtetem 21 nicht sonderlich schön, bricht also wenn die weitere ``<tr>``s einfügen. Da müsste man anders rangehen, d.h. also die ``<tr>`` durchgehen und gucken ob in ihren Childnodes das Bild vorhanden ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
The Hit-Man
User
Beiträge: 407
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Freitag 2. Mai 2008, 21:05

das letzte beispiel sieht auch gut aus ! ich glaube mir wäre das lieber, weil nicht alles, was ich abfragen möchte, ein minibildchen besitzt, da ist es vielleicht besser, den sowieso vielten tag abzufragen. werde mir beide codesnipes aufschreiben ;)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 2. Mai 2008, 23:44

The Hit-Man hat geschrieben:nicht alles, was ich abfragen möchte, ein minibildchen besitzt, da ist es vielleicht besser, den sowieso vielten tag abzufragen
Du musst dich ja auch nicht am Bildchen aufhängen, kannst auch andere Elemente nehmen. Ich habe das Bildchen gewählt, weil es recht leicht mit XPath/CSS Selektoren zu finden ist, aber du könntest auch an die Ziffer auf tausend anderen Wegen kommen. Der Weg mit dem Zählen der <td> ist aber recht unpraktisch, weil er vermutlich schon bei kleineren Änderungen an der Seite nicht funktioniert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten