2013-11-20 2 views
0

я пытаюсь получить страницы Википедии, используя названия вернулись из вызова API. Я вызываю API Википедии из библиотеки urllib2 python.Wikipedia API: получение статей с названиями в кодировке unicode

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

Давайте предположим, что мы хотим получить страницу о Escola улучшенный де CIENCIAS Empresariais, который имеет следующую ссылку: http://en.wikipedia.org/wiki/Escola_Superior_de_Ci%C3%AAncias_Empresariais_(Set%C3%BAbal)

Назвав я получаю то, что я хочу : http://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=xml&titles=Escola_Superior_de_Ci%C3%AAncias_Empresariais_(Set%C3%BAbal)&rvprop=timestamp|user|comment|content

Так происходит в начале этой проблемы, если я также использую википедии API для поиска школы как: http://en.wikipedia.org/w/api.php?action=query&list=search&srprop=''&format=xml&srsearch=Escola_Superior_de_Empresariais

Я получаю следующий XML-строка:

<api> 
    <warnings> 
    <search xml:space="preserve">Unrecognized value for parameter \'srprop\': \'\'</search> 
    </warnings> 
    <query> 
    <searchinfo totalhits="7"/> 
    <search> 
     <p ns="0" title="Escola Superior de Ci\xc3\xaancias Empresariais (Set\xc3\xbabal)"/> 
     <p ns="0" title="List of universities in Cape Verde"/> 
     <p ns="0" title="Polytechnic Institute of Viana do Castelo"/> 
     <p ns="0" title="S\xc3\xa3o Vicente, Cape Verde"/> 
     <p ns="0" title="Economy of Portugal"/> 
     <p ns="0" title="Higher education in Portugal"/> 
     <p ns="0" title="Grupo Opaia SA"/> 
    </search> 
    </query> 
</api> 

мой вопрос теперь заключается в том, что, как мы можем преобразовать полученную строку

Escola Superior de Ci\xc3\xaancias Empresariais (Set\xc3\xbabal) 

в форму, которая может быть вызвана непосредственно из API Википедии? То есть, как я могу создать ссылку, как:

http://en.wikipedia.org/wiki/Escola_Superior_de_Ci%C3%AAncias_Empresariais_(Set%C3%BAbal)

из найденных результатов?

+0

Вы можете просто перевести '\ x' на' '%? –

+0

http://stackoverflow.com/questions/912811/what-is-the-proper-way-to-url-encode-unicode-characters - вроде бы тот же основной вопрос – selllikesybok

+0

Нет, но в сочетании с - HTTP: //stackoverflow.com/questions/18163009/utf-8-percentage-encoding-and-python – selllikesybok

ответ

1

Использование urllib2.quote, которые делают это для вас.

По существу:

utf8_url = 'Escola Superior de Ci\xc3\xaancias Empresariais (Set\xc3\xbabal)' 
percent_url = urllib2.quote(utf8_url)