1

次のように、この可読性 APIにテキストを渡そうとしています。

text = 'this reminds me of the Dutch 2001a caravan full of smoky people Auld Lang Syne'
# construct Readability Metrics API url
request_url = 'http://ipeirotis.appspot.com/readability/GetReadabilityScores?format=json&text=%s' % text
request_url = urllib.quote_plus(request_url.encode('utf-8'))
# make request
j = json.load(urllib.urlopen(request_url))

ただし、最後の行でこのエラーが発生します。

[Errno 2] そのようなファイルまたはディレクトリはありません: 'http://ipeirotis.appspot.com/readability/GetReadabilityScores?format=json&text=this+reminds+me+of+the+Dutch+2001a+caravan+full+of+smoky +人+Auld+Lang+Syne'

ただし、エラーの URL は有効であり、アクセスすると応答が返されます。urlopen を使用できるように URL をエンコードするにはどうすればよいですか? どうもありがとう。

4

2 に答える 2

3

http:// などを含む完全な URL を引用しています。request_url の実際の値を出力しようとすると、次のようになります。

>>> print request_url
http%3A%2F%2Fipeirotis.appspot.com%2Freadability%2FGetReadabilityScores%3Fformat
%3Djson%26text%3Dthis+reminds+me+of+the+Dutch+2001a+caravan+full+of+smoky+people
+Auld+Lang+Syne

これはあなたが望むものではありません。Webサイトへの単一の引数にしたい部分だけを引用したい. 私は次のことを試しましたが、うまくいくようでした:

text = 'this reminds me of the Dutch 2001a caravan full of smoky people Auld Lang Syne'
# construct Readability Metrics API url
request_url = 'http://ipeirotis.appspot.com/readability/GetReadabilityScores?format=json&text=%s' % urllib.quote_plus(text.encode('utf-8'))
# make request
j = json.load(urllib.urlopen(request_url))
于 2011-12-04T18:09:56.873 に答える
1

urllib.urlencode を使用して、次のようにクエリ文字列のみをエンコードします。

request_url = 'http://ipeirotis.appspot.com/readability/GetReadabilityScores?%s' % urllib.urlencode({'format': 'json', 'text': text})

URL 全体をエンコードすると、スラッシュとコロンがエンコードされます。URL として適切に解析される (ローカル ファイルと間違われない) ように、それらをエンコードしないままにしておく必要があります。

于 2011-12-04T18:12:02.613 に答える