Hallo,
ich nutze folgenden Code in einer Logik:
Wenn ich den parser aufrufe, gibt es diesen Fehler:
Kann ich in einer Logik keine Klassen definieren?
Es soll ohnehin ein Plugin werden, aber eine Logik ist einfacher zu debuggen.
Gruß,
Hendrik
ich nutze folgenden Code in einer Logik:
Code:
class MyHTMLParser(HTMLParser): def __init__(self): super(MyHTMLParser, self).__init__() #HTMLParser.__init__(self) self.id = [] self.data = [] self.tag=None self.temp=[] def handle_starttag(self, tag, attrs): if tag != 'div': logger.debug('no div') return self.tag=tag self.temp=[] for attr in attrs: v=attr[1].split('pos') if len(v)>1: self.id.append(int(v[1])) def handle_data(self, data): if self.tag=='div': logger.debug('div with data'+str(data)) self.temp.append(data) def handle_endtag(self, tag): if tag == 'div': s="".join(self.temp) s=s.replace(',','.') s=s.replace('AUS','0') s=s.replace('EIN','1') logger.debug ('closing tag and saving ' + s) self.data.append(clean(s)) [....] html = str(sh.tools.fetch_url(url)) logger.debug('[UVR] ' + str(html)) parser = MyHTMLParser() parser.feed(str(html))
Code:
2014-05-02 13:02:44,398 ERROR UVR Logic: UVR, File: /usr/local/smarthome/logics/uvr.py, Line: 32, Method: __init__, Exception: global name 'MyHTMLParser' is not defined -- scheduler.py:_task:346 Traceback (most recent call last): File "/usr/local/smarthome/lib/scheduler.py", line 339, in _task exec(obj.bytecode) File "/usr/local/smarthome/logics/uvr.py", line 101, in <module> parser = MyHTMLParser() File "/usr/local/smarthome/logics/uvr.py", line 32, in __init__ super(MyHTMLParser, self).__init__() NameError: global name 'MyHTMLParser' is not defined
Es soll ohnehin ein Plugin werden, aber eine Logik ist einfacher zu debuggen.
Gruß,
Hendrik
Kommentar