Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
HTMLParser läuft nur im interaktiven Modus, nicht als Plugin
sorry Marcus. Läuft nicht als Plugin hätte ich schreiben sollen.
Alles läuft am Prompt von smarthome.py -i. Als LOGIK nicht (kann den Betreff nicht mehr ändern. Du?)
Du schreibst, dass im Falle der Logik der Code in einer Container-Funktion ausgeführt werden. Das wäre eine Erklärung, vorausgesetzt, Klassen in Funktionen funktionieren in python nicht. Hier wird das diskutiert, aber ich bin nicht sicher, ob das nicht zu hoch für mich ist. Ich versuche es morgen mit frischerem Geist nochmal.
HTMLParser läuft nur im interaktiven Modus, nicht als Plugin
Hallo,
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))
Wenn ich den parser aufrufe, gibt es diesen Fehler:
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
Kann ich in einer Logik keine Klassen definieren?
Es soll ohnehin ein Plugin werden, aber eine Logik ist einfacher zu debuggen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: