Question

Je dois effectuer la recherche google pour récupérer le nombre de résultats pour une requête. J'ai trouvé la réponse ici - Google Recherche d'une application Python

Cependant, pour quelques questions que je reçois l'erreur ci-dessous. Je pense que la requête a des caractères unicode.

UnicodeDecodeError: 'ascii' codec ne peut pas décoder octet 0xC3 en position 28: ordinal dans la plage (128)

Je cherchai google et trouvé que je dois convertir à ascii unicode, et trouve ci-dessous le code.

def convertToAscii(text, action):
            temp = unicode(text, "utf-8")
            fixed = unicodedata.normalize('NFKD', temp).encode('ASCII', action)
            return fixed
    except Exception, errorInfo:
            print errorInfo
            print "Unable to convert the Unicode characters to xml character entities"
            raise errorInfo

Si je l'action ignorer, il supprime les caractères, mais si je l'utilise d'autres actions, je reçois des exceptions.

Toute idée, comment gérer cela?

Merci

== == Modifier J'utilise le code ci-dessous pour coder puis effectuer la recherche et ce jette l'erreur.

query = urllib.urlencode ({ 'q': SearchFor})

Était-ce utile?

La solution

Vous ne pouvez pas urlencode chaînes Unicode premières. Vous devez d'abord les coder en UTF-8, puis nourrissez lui:

query = urllib.urlencode({'q': u"München".encode('UTF-8')})

Ce rendement q=M%C3%BCnchen qui Google accepte avec joie.

Autres conseils

Vous ne pouvez pas convertir en toute sécurité Unicode en ASCII . Cela implique de jeter l'information (en particulier, il jette des lettres non-anglais).

Vous devez faire tout le processus en Unicode, afin de ne pas perdre des informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top