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