html file durchsuchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

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
Antworten