#python #xml #wikipedia #wikimedia
#python #xml #википедия #викимедиа
Вопрос:
Я хочу иметь возможность загружать полные истории нескольких тысяч статей с http://en.wikipedia.org/wiki/Special:Export и я ищу программный подход к его автоматизации. Я хочу сохранить результат в формате XML.
Вот мой запрос в Википедии. Я начал следующее на Python, но это не дало никакого полезного результата.
#!/usr/bin/python
import urllib
import codecs
f = codecs.open('workfile.xml', 'w',"utf-8" )
class AppURLopener(urllib.FancyURLopener):
version = "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
urllib._urlopener = AppURLopener()
query = "http://en.wikipedia.org/w/index.php?title=Special:Exportamp;action=submit"
data = { 'catname':'English-language_Indian_films','addcat':'', 'wpDownload':1 }
data = urllib.urlencode(data)
f = urllib.urlopen(query, data)
s = f.read()
print (s)
Комментарии:
1. Почему результат не является полезным? Что вы ожидали получить?
2. Пожалуйста, не используйте некорректный пользовательский агент, если это не является абсолютно необходимым. Википедия должна работать с любым непустым пользовательским агентом.
3. @svick: Это не совсем так — некоторые строки пользовательского агента занесены в черный список. Досадно, что это включает, например, строку пользовательского агента libwww-perl по умолчанию; Я бы не удивился, обнаружив в списке строку UA по умолчанию для Python urllib.
4. @IlmariKaronen, да, ты прав. Но любой пользовательский агент, который вы предоставляете себе для идентификации вашего приложения, должен быть в порядке.
5. @ekhumoro Я хочу загрузить XML-файл.
Ответ №1:
Я бы честно предложил использовать Mechanize для получения страницы, а затем использовать lxml или другой анализатор xml для получения нужной информации. Обычно я использую пользовательский агент firefox, поскольку многие пользовательские агенты программы заблокированы. Обратите внимание, что с Mechanize вы можете фактически заполнить форму и «нажать» enter, затем «нажать» export.