Вопрос

Я пытаюсь передать текст в это читабельность 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+theTuckES+2001A+Caravan+fulL+Of+Smoky +люди+auld+lang+syne '

Тем не менее, URL в ошибке действителен и возвращает ответ при его посещении. Как кодировать URL, чтобы я мог использовать Urlopen? Большое спасибо.

Это было полезно?

Решение

Вы цитируете полный URL, включая http: //, а что нет. Если вы попытаетесь распечатать фактическое значение 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

Что не то, что вы хотите. Вы хотите процитировать только те части, которые хотите стать одним аргументом на веб -сайте. Я попробовал следующее, и это, казалось, сработало:

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))

Другие советы

Используйте urllib.urlencode, чтобы кодировать только строку запроса, например, так:

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

Кодирование всего URL -адреса будет кодировать черты и колонны, и вы хотите, чтобы они оставались некодированными, чтобы он был правильно проанализирован как URL -адрес (и не ошибается за локальный файл).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top