Anfängerfrage zu re.compile

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.
BlackJack

@sveni_lee: Das eine hat nichts mit dem anderen zu tun. Beim `SyntaxError` konnte der Compiler nichts mit dem Ö anfangen. Beim zweiten Fehler mischst Du Bytestrings und Unicode, was dazu führt das Python versucht implizit den Bytestring als ASCII zu dekodieren. Der ist aber kein ASCII, darum geht das nicht. Verwende ein Unicode-Zeichenliteral, also ein u vor der Zeichenkette: u' (Östrreich)'
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

ahhh...

okay, jetzt habe ich das verstanden...

klappt wunderbar - Danke...!
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

hier hat nicht zufällig jemand Ahnung von JSON RPC abfragen?

Ich versuche grad den Namen zu der imdbnumber aus meiner Kodi-Datenbank aufzulösen.
bekomme aber immer nur 0 angezeigt... Also denke ich das da noch irgendwo ein Fehler sein muss...

Code: Alles auswählen

def TVShowName2TVShowID(tvshowname):
    query = {
           "jsonrpc": "2.0",
           "method": "VideoLibrary.GetTVShowDetails",
            "params": {"limits": {"start": 0, "end": 200}},
            "id": 1
            }
    res = json.loads(xbmc.executeJSONRPC(json.dumps(query, encoding='utf-8')))
  
    if 'result' in res and 'tvshow' in res['result']:
        res = res['result'].get('tvshow')
        for tvshow in res:
            if tvshowname.lower () in tvshow['sorttitle'].lower():
                debug("SerienPlaner found  imdb-ID %s" % (tvshow['sorttitle']))
                return tvshow['imdbnumber']
    return 0
Benutzeravatar
miracle173
User
Beiträge: 127
Registriert: Samstag 6. Februar 2016, 00:28

sveni_lee hat geschrieben:hier hat nicht zufällig jemand Ahnung von JSON RPC abfragen?
(...)
Das ist jetz eigentlich wieder eine eigenständige Frage und gehört nicht mehr zu 'Anfängerfrage zu re.compile'
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

Dake, neuen Tread erstellt...
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

@BackJack:

irgendwie finde ich BeautifulSoup sehr interessant... und für meine "nächsten" Versuch bestens geeignet...

ich habe eine xml-"Seite" die mir die gewünschen Informationen zur verfügung stellt.
jetzt möchte ich diese xml-"Seite" auswerten...

bsp: http://thetvdb.com/api/DECE3B6B5464C552 ... all/de.xml

hier sind alle informationen zu einer Serie abgelegt.
ich habe folgende Werte:
<EpisodeNumber> und <SeasonNumber> damit lässt sich die Episode eindeutig identifizieren

Ich würde das jetzt so machen...

Code: Alles auswählen

def get_desc_thetvdb():
	url="http://thetvdb.com/api/DECE3B6B5464C552/series/"+imdbnumber+"/all/de.xml"
    soup = BeautifulSoup(url)
	content = soup.find('Episode')
	result = {
		'season_tvdb': parse_number(node.find('SeasonNumber')),
		'episode_tvdb': parse_number(node.find('EpisodeNumber')),
		'episode_title_tvdb': node.find('EpisodeName)',
		'desc_db': node.find('Overview').text,
		'episodeid_tvdb': parse_number(node.find('id')),
	}
	return result
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

so, ich habe jetzt alle Einzelteile zusammen und versuche grad daraus ein plugin/script zumachen.

jetzt habe ich folgenden Fehler:

Code: Alles auswählen

 File "G:\KODI-Krypton\portable_data\addons\plugin.program.serienplaner\default.py", line 82, in getUnicodePage
 req = urllib2.urlopen(url, None, headers)
die entsprechende code Passage:

Code: Alles auswählen

def getUnicodePage(url, container=None):
    try:
        headers = { 'User-Agent' : 'Mozilla/5.0' }
        req = urllib2.urlopen(url, None, headers)
    except UnicodeDecodeError:
        req = urllib2.urlopen(url)
    encoding = 'utf-8'
    if "content-type" in req.headers and "charset=" in req.headers['content-type']:
        encoding=req.headers['content-type'].split('charset=')[-1]
    content = unicode(req.read(), encoding).replace("\\", "")
    if container is None: return content
    return content.split(container)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@sveni_lee: Und welchen Fehler bekommst Du?

Bevor Du jetzt anfängst Teile von requests nachzuprogrammieren, nochmals die Empfehlung gleich requests zu benutzen.
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

okay, das erste Problem konnte ich lösen...

Code: Alles auswählen

def getUnicodePage(url, container=None):
    try:
        headers = { 'User-Agent' : 'Mozilla/5.0' }
        req = urllib2.Request(url, None, headers)
    except UnicodeDecodeError:
        req = urllib2.urlopen(url)

    encoding = 'utf-8'
    if "content-type" in req.headers and "charset=" in req.headers['content-type']:
        encoding=req.headers['content-type'].split('charset=')[-1]
    content = unicode(urllib2.urlopen(req).read(), encoding).replace("\\", "")
    if container is None: return content
    return content.split(container)
liefert mir nun das gewünschte Ergebnis...

nun habe ich die einzelnen scraper ausgelagert....

der scraper, der mir detailURL liefert

Code: Alles auswählen

_detailurl = re.compile('&nbsp;<a href="(.+?)" class', re.DOTALL).findall(content)
self.detailURL = "http://www.wunschliste.de"+_detailurl[0]
wenn ich nun die detailURL scrapen möchte

Code: Alles auswählen

details = WLScraper()
details.scrapeDetailPage(getUnicodePage(data.detailURL), 'div class="text"')
kommt immer eine Fehlermeldung:

Code: Alles auswählen

 Error Contents: unknown url type: 
 Traceback (most recent call last):
 File "G:\KODI-Krypton\portable_data\addons\plugin.program.serienplaner\default.py", line 474, in <module>
 scrapeWLPage(category)
 File "G:\KODI-Krypton\portable_data\addons\plugin.program.serienplaner\default.py", line 401, in scrapeWLPage
 details.scrapeDetailPage(getUnicodePage(data.detailURL), 'div class="text"')
 File "G:\KODI-Krypton\portable_data\addons\plugin.program.serienplaner\default.py", line 89, in getUnicodePage
 content = unicode(urllib2.urlopen(req).read(), encoding).replace("\\", "")
Antworten