0

クエリの結果の数を取得するには、Google 検索を実行する必要があります。ここで答えを見つけました-PythonアプリからのGoogle検索

ただし、いくつかのクエリでは、以下のエラーが発生します。クエリにユニコード文字が含まれていると思います。

UnicodeDecodeError: 'ascii' コーデックは位置 28 のバイト 0xc3 をデコードできません: 序数が範囲外です (128)

Google を検索したところ、Unicode を ascii に変換する必要があることがわかり、以下のコードが見つかりました。

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

アクションを無視すると、それらの文字が削除されますが、他のアクションを使用すると、例外が発生します。

これを処理する方法はありますか?

ありがとう

== 編集 == 以下のコードを使用してエンコードしてから検索を実行すると、エラーがスローされます。

クエリ = urllib.urlencode({'q': searchfor})

4

2 に答える 2

2

urlencodeUnicode文字列を生にすることはできません。最初にそれらをUTF-8にエンコードしてから、それにフィードする必要があります。

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

q=M%C3%BCnchenこれは、Googleが喜んで受け入れるものを返します。

于 2011-01-24T01:56:48.647 に答える
0

Unicodeを ASCIIに安全に変換することはできません。そうすることは、情報を捨てることを伴います (具体的には、英語以外の文字を捨てます)。

情報を失わないように、プロセス全体を Unicode で実行する必要があります。

于 2011-01-24T01:39:33.540 に答える