это в основном то, что я делаю. Я выбираю научную статью на en.wikipedia.org и получаю список пользователей, которые внесли изменения и сколько раз они редактировали статью. Чтобы получить это, я перехожу по ссылкам со страницы, чтобы привести меня к серверу инструментов. Я использую эту страницу http://toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=en&wikifam=.wikipedia.org&page=Quantum_mechanics&since=&until=&grouped=on&hideanons=on&order=-edit_count&max=100&order=-edit_count&format=wiki для получения редакторов в отсортированном списке и исключая анонимных. Это хорошо работает, потому что он входит в красиво отформатированный список (хотя в нем есть даты, которые мне не нужны).
Однако, чтобы судить об их достоверности, мне нужно взглянуть на лучших пользователей и увидеть лучшие статьи, в которые они вносят вклад, чтобы увидеть, редактируют ли они много научных статей или просто случайный мусор. Мне трудно получать данные о каждом из этих пользователей, так как в настоящее время единственный сайт, который я могу найти, который показывает историю пользователей, это http://en.wikipedia.org/w/index.php?title=Special:Contributions&limit=5000&target=Aquirata
Однако, чтобы получить веб-страницу одного пользователя, требуется не менее 20 секунд, а затем мне все еще приходится анализировать бесполезные данные и т. Д. Мне не нужно столько данных, сколько я вынужден скачать. Это мой код для получения данных пользователя:
static string getWebPage(string url)
{
WebClient client = new WebClient();
client.Headers.Add("user-agent",
"Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");
return client.DownloadString(url);
}
static void Main(string[] args)
{
string url = "http://en.wikipedia.org/w/index.php?title=Special:Contributions&limit=50&target=Aquirata";
string page = getWebPage(url);
var lines = page.Split('\n', '\r');
var edits = lines.Where(t => t.StartsWith("<li class"));
foreach (string s in edits)
Console.WriteLine(s);
Console.ReadLine();
}
Есть ли альтернатива, которая будет быстрее и / или проще? Может быть, где-то есть база данных для этого? (Я не уверен, что в Викискладе есть статистика вкладов пользователей).
Кроме того, я использую C #, потому что я наиболее знаком с ним. Я мог бы переключиться на Java, чтобы разрешить кроссплатформенность, но я открыт для любых других предложений.