27

リクエストライブラリを使用してDiffbotAPIにクエリを実行し、WebページのURLから記事のコンテンツを取得しています。ブラウザで作成したリクエストURLにアクセスすると、たとえばUnicodeのテキストを含むJSONオブジェクトが返されます(右?)(テキストを少し短縮しました)。

{"icon": "http://mexico.cnn.com/images/ico_mobile.jpg"、 "text": "CIUDADDEMÉXICO(CNNMéxico)\ u2014 Kassandra Guazo Cano tiene32años、peroestedomingoparticipóporprimeravez enunaelección。\n\ "Nohabíasacadomi(credencial del)IFE(Instituto Federal Electoral)porquealhacereltrámitehaymuchamofacuando ven que tu nombre no complete con tu y otros documentos de acuerdo con sunuevaidentidad。\ nSánchezdicequelos solicitantes no son discriminados、pero la experiencia de Kassanda es diferente:\ "hay que pagar un licenciado、dos peritos(entre ellosunendocrinólogo)。Además、el juez dicta sendencia para el cambio de nombre y tienes queesperarotroscuatroañosparavolverademandaralregistrocivil\"。\nAnteestasituación、el Consejo para Prevenir y Eliminar la sculina、lostransgénerovotan-メキシコ:Voto 2012-Nacional "、" url ":" http://mexico.cnn.com/nacional/2012/07/02/con-apariencia-de- mujer-e-identidad-masculina-los-transexuales-votan "、" xpath ":" / HTML [1] / BODY [1] / SECTION [5] / DIV [1] / ARTICLE [1] / DIV [1] / DIV [6] "}

次のようにPythonリクエストライブラリを使用する場合:

def get_article(self, params={}):
  api_endpoint = 'http://www.diffbot.com/api/article'
  params.update({
    'token': self.dev_token,
    'format': self.output_format,
  })
  req = requests.get(api_endpoint, params=params)
  return json.loads(req.content)

これを返します(テキストを少し短くしたことに注意してください):

{u'url':u'http://mexico.cnn.com/nacional/2012/07/02/con-apariencia-de-mujer-e-identidad-masculina-los-transexuales-votan'、u'text ':u' CIUDAD DE M \ xc9XICO(CNNM \ xe9xico)\ u2014 Kassandra Guazo Cano tiene 32 a \ xf1os、pero este domingo particip \ xf3 porprimera vez en una elecci\xf3n。\n"No hab \ xeda sacado mi( credencial del)IFE(Instituto Federal Electoral)porque al hacOyuky Mart \ xednez Col \ xedn、tambi \ xe9n transg \ xe9nero、y que estaba acompa \ xf1ada de sus dos hijos y su mam\xe1。\nAmbastrabajan como de Apoyo a las Identidades Trans、AC、donde participan en una campa \ xf1a de prevenci \ xf3n deenfermedadessexuales。\n"Quisi \ xe9ramos que no solo nos vean como trabajadoras sexuales o estilistas、sino que luchamos pordice Kassandra mientras sonr \ xede、sostiene su credencial de elector y levanta su pulgarentintado。'、u' title':u' Con apariencia de mujer e identidad masculina、los transg \ xe9nero votan-M \ xe9xico:Voto 2012-Nacional ' 、u'xpath':u' / HTML [1] / BODY [1] / SECTION [5] / DIV [1] / ARTICLE [1] / DIV [1] / DIV [6]'、u'icon': u'http://mexico.cnn.com/images/ico_mobile.jpg'}

Unicodeをよく理解していません。リクエストで取得するものがまだUnicodeであることを確認するにはどうすればよいですか?

4

2 に答える 2

41

req.text代わりにを使用req.contentして、Unicodeを確実に取得できます。メソッドについて説明します。

http://docs.python-requests.org/en/latest/api/#main-interface

于 2012-10-11T15:39:45.800 に答える
15

「Unicodeがよくわからない」に関しては、Joel SpolskyによるUnicodeに関する面白い入門書と、 Python固有のすべてを網羅した10分間の公式PythonUnicodeHowToがあります。

リクエストのドキュメントによると、リクエストは常にユニコードを返します。投稿したコンテンツの例は実際にはユニコードです(文字列の構文に注意してu''ください。これはPythonのユニコード文字列の構文です)。したがって、問題はありません。JSON応答をWebブラウザーで表示する場合、u''Pythonが文字列を格納する方法のプロパティであるため、そこには表示されないことに注意してください。

アプリケーションにとってユニコードが重要である場合は、ユニコードについて本当に知らずに対処しようとしないでください。あなたは苦痛の世界にいます。あなたが何をしているのかわからない場合、文字セットの問題はデバッグするのに非常にイライラします。上記の両方の記事を読むには、おそらく30分かかります。

于 2012-07-11T15:04:39.653 に答える