Есть ли способ автоматизировать загрузку статей из Википедии с помощью специального экспорта? - PullRequest
1 голос
/ 08 июля 2011

Я хочу иметь возможность загружать полные истории нескольких тысяч статей из http://en.wikipedia.org/wiki/Special:Export, и я ищу программный подход для его автоматизации
Я начал следующее в Python, но это не дает никакого полезного результата

query = "http://en.wikipedia.org/w/index.api?title=Special:Export&pages=%s&history=1&action=submit" % 'Page_title_here'
f = urllib.urlopen(query)
s = f.read()

Есть предложения?

1 Ответ

1 голос
/ 08 июля 2011

Удалите список страниц, которые вы хотите загрузить, в массив pages, и это должно работать. Запустите скрипт, и он распечатает файл XML. Обратите внимание, что Википедия, кажется, блокирует пользовательский агент urllib, но я не вижу ничего на страницах, которые предлагают автоматическую загрузку, запрещено. Используйте на свой страх и риск.

Вы также можете добавить 'curonly':1 в словарь, чтобы получить только текущую версию.

#!/usr/bin/python
import urllib

class AppURLopener(urllib.FancyURLopener):
    version = "WikiDownloader"
urllib._urlopener = AppURLopener()

query = "http://en.wikipedia.org/w/index.php?title=Special:Export&action=submit"
pages = ['Canada']
data = { 'catname':'', 'wpDownload':1, 'pages':"\n".join(pages)}
data = urllib.urlencode(data)
f = urllib.urlopen(query, data)
s = f.read()
print(s)
...