скачивать статьи из википедии с помощью специального экспорта

Я хочу иметь возможность загружать полные истории нескольких тысяч статей с 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:Export&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)

person no_freedom    schedule 31.10.2011    source источник
comment
Почему результат не полезен? Что вы ожидали получить?   -  person ekhumoro    schedule 31.10.2011
comment
Пожалуйста, не используйте неправильный пользовательский агент, если в этом нет крайней необходимости. Википедия должна работать с любым непустым пользовательским агентом.   -  person svick    schedule 31.10.2011
comment
@svick: Это не полностью верно — некоторые строки пользовательского агента занесены в черный список. Досадно, что это включает в себя, например. строка пользовательского агента libwww-perl по умолчанию; Я не удивлюсь, если найду в списке строку UA по умолчанию для Python urllib.   -  person Ilmari Karonen    schedule 01.11.2011
comment
@IlmariKaronen, да, ты прав. Но любой пользовательский агент, который вы сами предоставляете для идентификации вашего приложения, должен подойти.   -  person svick    schedule 01.11.2011
comment
@ekhumoro Я хочу скачать файл XML.   -  person no_freedom    schedule 01.11.2011


Ответы (1)


Я бы честно предложил использовать Mechanize для получения страницы, а затем использовать lxml или другой парсер xml для получения нужной информации. Обычно я использую пользовательский агент firefox, так как многие программные пользовательские агенты заблокированы. Обратите внимание, что с Mechanize вы можете заполнить форму и «щелкнуть» ввод, а затем «щелкнуть» экспорт.

person Snakes and Coffee    schedule 06.03.2012