Seite 1 von 1

html file durchsuchen

Verfasst: Freitag 21. Oktober 2005, 10:35
von Gast
hallo,

kurze frage an euch, da ich grad anfange mit python zu programmieren.

ich habe eine html datei, in der eine tabelle vorhanden ist mit 5 spalten. nun möchte ich eine suchfunktion mit python schaffen, dass man in der datei suchen kann.
wie kann man das programmieren. gibt es schon fertige fkten dafür?
ich habe es mir so überlegt:
html datei durchsuchen mit regulären ausdrücken, damit ich den inhalt "herausfiltern" kann und dann in eine txt als tabelle schreiben.
dann wiederum in der txt datei suchen und gefundenen stellen zurückgeben.

geht das ganze denn evtl auch einfacher, z.bsp direkt in html datei suchen ohne die daten zu filtern?

ich danke euch im voraus...

Verfasst: Freitag 21. Oktober 2005, 11:06
von jens
Hab mal eine kleinere Version von http://www.python-forum.de/viewtopic.php?t=3610 für dich erstellt. Fuktioniert zwar nicht spontan so toll mit HTML-Daten, weil halt HTML-Code angezeigt wird, aber schon mal ein Ansatz:

Code: Alles auswählen

class search:
    def __init__(self, content_extract=35, max_cutouts=20):
        # Größe des Ausschnittes der angezeigt wird
        self.content_extract = content_extract

        # Max. Anzahl an Treffer, die Angezeigt werden sollen
        self.max_cutouts = max_cutouts

    def search_file( self, filepath, search_string ):
        f = file( filepath, "r" )
        content = f.read()
        f.close()
        if search_string in content:
            self.cutout_content( content, search_string )

    def cutout_content( self, content, search_string ):
        current_pos = 0
        search_string_len = len( search_string )
        for i in xrange( self.max_cutouts ):
            try:
                pos = content.index( search_string, current_pos )
            except ValueError:
                break

            content_window = content[ pos-self.content_extract : pos+self.content_extract ]
            print ">>>", content_window.encode("String_Escape")
            current_pos += pos + search_string_len


if __name__ == "__main__":
    s = search()
    s.search_file(__file__, "print") # Sucht in sich selbst nach 'print'
Ausgaben:
>>> self.content_extract ]\n print ">>>", content_window.encode(
>>> rch()\n s.search_file(__file__, "print") # Sucht in sich selbst nach

Verfasst: Freitag 21. Oktober 2005, 11:37
von henning
Ich denke du wirst am besten mit regulären Ausdrücken (re's, "pydoc re") oder BeautifulSoup bedient sein, vielleicht hilft die auch die HTMLParser-Library.

Ich glaube aber mich zu erinnern, dass das alles schon zu dem Thema irgendwann mal hier erwähnt wurde, im Zweifelsfall also Suchfunktion bemühen :-)

Henning