img-Tags aus HTML-Datei parsen

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.
Cortex
User
Beiträge: 2
Registriert: Samstag 6. März 2004, 13:26
Wohnort: Hamburg
Kontaktdaten:

img-Tags aus HTML-Datei parsen

Beitragvon Cortex » Samstag 6. März 2004, 13:40

Ich möchte eine HTML-Datei parsen, die verschiedene Links enthält.
Die Links zu parsen ist kein Problem. Doch in den Links sind ab und zu auch Bilder. Wobei der Name des Links dann im Alt-Parameter steht. Ich schaffe es nicht den Parameter auszulesen. Kann jemand helfen?

Code: Alles auswählen

class Parser(htmllib.HTMLParser):
  def __init__(self, verbose=0):
    self.anchors = {}
    f = formatter.NullFormatter()
    htmllib.HTMLParser.__init__(self, f, verbose)
  def anchor_bgn(self, href, name, type):
    self.save_bgn()
    self.anchor = href
  def anchor_end(self):
    text = string.strip(self.save_end())
    if self.anchor and text:
      self.anchors[text] = self.anchors.get(text, []) + [self.anchor]


So funktioniert es mit den Links, aber wie sieht eine Funktion aus die andere Tags parst.
Ich verstehe die Funktionen save_bgn(), save_end() und handle_image() nicht so richtig.
Würde mich freuen wenn sich jemand damit schon mal beschäftigt hat.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 6. März 2004, 13:56

Hi. Kannst du mal bitte ein Beispiel geben, wie ein Ergebnis aussehen soll, oder was gemacht werden muss? Ich habe noch nie mit der htmllib gearbeitet :oops: und weiß nicht, was der Parser als Ergebnis leisten soll. Soll etwas umfromatiert werden, oder werden hier Informationen extrahiert?

Milan
Cortex
User
Beiträge: 2
Registriert: Samstag 6. März 2004, 13:26
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Cortex » Sonntag 7. März 2004, 02:04

Es soll etwas extrahiert werden und in eine DB oder Datei geschrieben werden.
Wie das passiert ist nicht das Problem.

<A HREF="CDs/ibo/ibo1cd021.html" CLASS="n">Name<DIV CLASS="n2">News</DIV></A>

Ungefähr so sehen die Tags aus.
Und so sollte die Ausgabe aussehen.

CDs/ibo/ibo1cd021.html ; n : Name ; n2 : News ;

Code: Alles auswählen

def handle_image(self, source, alt, ismap, align, width, height):
  print source, alt


So bekomme ich für jedes Bild eine Ausgabe.
Nur weitere Parameter wie class bekomm ich nicht...?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Donnerstag 11. März 2004, 18:39

Hi. Um ehrlich zu sein: Ich komm mit dem HTML-Parser immer noch nicht zurecht. aber ich glaube, ich hab dich soweit verstanden, dass du nur die Informationen Linkadresse und description mit den jeweiligen Classes willst. Hier würde ich mir einfach zwei RE's basteln, die das gleiche erfüllen. Wenn du noch ein wenig Geduld hast mach ich das auch, aber ich hab erst ab dem Wochenende mal wieder mehr Zeit in die Materie einzusteigen.

mfg, Milan
romulus
User
Beiträge: 7
Registriert: Freitag 22. August 2003, 13:13

Beitragvon romulus » Freitag 19. März 2004, 15:47

Folgenden Code benutze ich:

Code: Alles auswählen

from sgmllib import SGMLParser

class MeinParser(SGMLParser):
   
   def reset(self):
      SGMLParser.reset(self)
   def start_form(self, attrs):
      name = [v for k, v in attrs if k=='name']
      
      if name == ['Formular_Team']:
         self.isFormular = 1
   
   def end_form(self):
      self.isFormular = 0


Das Tag sieht dabei so aus: <form name=Formular_Team ...> Die Attribute zu einem Tag stehen beim SGMLParser im Parameter attrs.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]