Seite 1 von 1

Suchen von Bildern in HTML

Verfasst: Samstag 14. Juni 2003, 21:07
von XT@ngel
Hier bitte, hab ich mal für ein Programm geschrieben das mir automatisch Bilder "geklaut" hat *g*

Code: Alles auswählen

import htmllib, re, formatter, urlparse

class IMGParser(htmllib.HTMLParser):
   def __init__(self, URL, verbose = 0):
      htmllib.HTMLParser.__init__(self, verbose)
      self.URL            = URL
      self.a_bilder       = []
      self.src_bilder     = []
      self.a_keine_bilder = []

   def do_img(self, attrs):
      for src, location in attrs:
	 if src == "src":
	    _link_url = urlparse.urlparse(location)
	    _temp = _link_url[2].split("/")
	    local_name = _temp[-1]
	    if _link_url[0] != "" or _link_url[1] != "":
	       _img_url = location
	    else:
	       _img_url = urlparse.urljoin(self.URL, _link_url[2])
	    _src_bild = [local_name,_img_url]
	    self.src_bilder.append(_src_bild)

   def anchor_bgn(self, href, name, type):
      _link_url = urlparse.urlparse(href)              #zerlege URL zum Bild -
      _temp = _link_url[2].split("/")                  #Trennen von Pfad wo bild auf Server liegt anhand von /
      local_name = _temp[-1]                           #das ist der lokale name der Datei
      _pattern = r"([^\\[]*).(gif|jpg|jpeg|jpe)"           #Suche nach den type img gif. jpg.jpeg im localen namen
      _img_true = re.match(_pattern, local_name)       #        "

      if _img_true == None:                            #Wenn Link nicht zu einem bild führt
         self.a_keine_bilder.append(href)
      else:                                            #sonst:
         if _link_url[0] != "" or _link_url[1] != "":  #Wenn URL nicht realtiv dann:
            _img_url = href                            #href ist die fertige Adresse zum Bild
         else:                                         #sonst:
            _img_url = urlparse.urljoin(self.URL, _link_url[2]) #Adresse erstellen
         _a_bild = [local_name, _img_url]
	 self.a_bilder.append(_a_bild)



#url = "http://bilder.de/index.html"

#_host = urllib.urlopen(url)
#_h = IMGParser(url, formatter.NullFormatter(None))
#_h.feed(_host.read())


#print _h.a_keine_bilder
#print "\n"
#print _h.a_bilder
#print "\n"
#print _h.src_bilder
MfG
Andreas

Verfasst: Mittwoch 2. August 2006, 19:24
von nofuture
Was passiert in Zeile 14? src = "src"

Kriege da eine Fehlermeldung.

Verfasst: Mittwoch 2. August 2006, 20:21
von SigMA
du bekommste wahrscheinlich eine Fehlermeldung weil es nicht richtig eingerückt ist nach dem for Block

SigMA

Verfasst: Mittwoch 2. August 2006, 20:27
von XT@ngel
Beim dem code ist anscheinend bei der Umstellung auf Python Code tags die Einrückung verloren gegangen:

Code: Alles auswählen

class IMGParser(htmllib.HTMLParser):
   def __init__(self, URL, verbose = 0):
      htmllib.HTMLParser.__init__(self, verbose)
      self.URL            = URL
      self.a_bilder       = []
      self.src_bilder     = []
      self.a_keine_bilder = []

   def do_img(self, attrs):
      for src, location in attrs:
         print "t:" + src
         if src == "src":
            _link_url = urlparse.urlparse(location)
            _temp = _link_url[2].split("/")
            local_name = _temp[-1]
         if _link_url[0] != "" or _link_url[1] != "":
            _img_url = location
         else:
            _img_url = urlparse.urljoin(self.URL, _link_url[2])
         
         _src_bild = [local_name,_img_url]
         self.src_bilder.append(_src_bild)

   def anchor_bgn(self, href, name, type):
      _link_url = urlparse.urlparse(href)              #zerlege URL zum Bild -
      _temp = _link_url[2].split("/")                  #Trennen von Pfad wo bild auf Server liegt anhand von /
      local_name = _temp[-1]                           #das ist der lokale name der Datei
      _pattern = r"([^\\[]*).(gif|jpg|jpeg|jpe)"           #Suche nach den type img gif. jpg.jpeg im localen namen
      _img_true = re.match(_pattern, local_name)       #        "

      if _img_true == None:                            #Wenn Link nicht zu einem bild führt
         self.a_keine_bilder.append(href)
      else:                                            #sonst:
         if _link_url[0] != "" or _link_url[1] != "":  #Wenn URL nicht realtiv dann:
            _img_url = href                            #href ist die fertige Adresse zum Bild
         else:                                         #sonst:
            _img_url = urlparse.urljoin(self.URL, _link_url[2]) #Adresse erstellen
         _a_bild = [local_name, _img_url]
      
         self.a_bilder.append(_a_bild)
Zeile 14 überprüft nur ob das Attribut im img-Tag ein src-Attribut ist.
So jetzt müssts passen.
Für den unteren Teil musst Du noch das modul urllib importieren,

MfG
Andreas

Verfasst: Donnerstag 3. August 2006, 09:53
von birkenfeld
Warum fangen denn alle deine lokalen Variablennamen mit _ an?

Verfasst: Donnerstag 3. August 2006, 11:42
von XT@ngel
Du fragst mich im Jahr 2006 wieso 2003, gerade in diesem Beispiel, alle meine lokalen Variablennamen mit _ angefangen haben..

keine Ahnung :mrgreen:

Verfasst: Donnerstag 14. September 2006, 15:48
von sape
Naja, möchte dir nicht zu nahe träten aber der Code ist echt ein schlechter Programmierstiel ^^ Ich weis das weil ich so früher auch programmiert habe ^^ zuviel von den unterstrichen und teilweise undurchsichtige Namen (zB. a_keine_bilder. Wozu das a am Anfang?) ^^

Gott sei dank benutzt du nicht eine Variabel für 100 verschiedene Aufgaben wie ich damals xD --> tmp1, tmp2, tmp3 für 1K verschieden Aufgaben ^^

lg

Verfasst: Donnerstag 14. September 2006, 21:20
von XT@ngel
XtraNine hat geschrieben:Naja, möchte dir nicht zu nahe träten aber der Code ist echt ein schlechter Programmierstiel
Programmieren ist mein Hobby, ich habe und werde auch kein Informatik studieren.
Alles was ich programmiere hat nur einen Zweck, nämlich mein Problem zu lösen.
Problem -> Lösung finden -> umsetzen -> Wenn das Programm nicht mehr gebraucht wird ab in den Müll :D
Dass ich irgendwas für die "Allgemeinheit" schreibe ist recht selten.
XtraNine hat geschrieben:(zB. a_keine_bilder. Wozu das a am Anfang?)
Des kann ich dir heute noch sagen :)
Da a steht für einen Link <a href= ...<img src .. </img></a> da ein Link aber auch auf ein Bild zeigen kann hab ich einfach unterschieden ...
(Thumbnails)

MfG und gute Nacht
Andreas