2013-07-29 2 views
2

Мне нужно программно получить статьи из Википедии, мне нужно иметь возможность получать разделы и их содержимое в виде HTML или исходного текста.Программно получить статью из WikiPedia в .NET

Возьмите эту страницу в качестве примера: http://en.m.wikipedia.org/wiki/LINQ

Я нашел это .NET Апи, но это, кажется, не поддерживает получение статей.

https://github.com/svick/LINQ-to-Wiki

Есть ли .NET библиотеки, которые я могу использовать, или мне придется разобрать HTML содержимое веб-сайта?

P.S. Я знаю, что у wikipedia есть API, но я не вижу никаких примеров того, как его использовать, чтобы делать то, что мне нужно.

+1

Запрашивать библиотеки и другие внешние ресурсы [off topic] (http://stackoverflow.com/help/on-topic). Попробуйте описать, какую проблему вы испытываете при реализации. – Romoku

+1

Почему бы вам просто не использовать пакет Agility Pack? –

ответ

4

Вы можете сделать это несколько способов:

Использование HtmlAgilityPack и разбора HTML. Судя по этой странице все разделы, как представляется, в формате

<div class="section"> 

Кроме того, из того, что я могу взглянуть с LINQ to Wiki API, вы можете получить данные страницы по категориям (которые я считаю это разделы вы ссылаетесь тоже) , Дальнейший анализ был бы нужен, но я предлагаю вам взглянуть на:

6

способ получить текст статьи с помощью API будет что-то вроде:

http://en.wikipedia.org/w/api.php?action=query&titles=LINQ&prop=revisions&rvprop=content

Использование LINQ to Wiki аналогично:

string text = 
    wiki.CreateTitlesSource("LINQ") 
     .Select(p => p.revisions().FirstOrDefault().value) 
     .ToEnumerable() 
     .Single(); 

Для такой общей операции это довольно сложный код. Я думал о добавлении вспомогательных методов для таких общих операций, как этот, но пока я этого не догадывался.

+1

Это интересно! Есть ли способ получить статью как html? * Я программирую мобильное устройство * – jjdev80

+1

Да, вы можете. В URL-адрес просто добавьте '& rvparse'. В LINQ to Wiki используйте '.Select (p => p.revisions(). Где (r => r.parse) .FirstOrDefault(). Value)'. – svick

+1

Есть ли способ сделать «fromDate» на url, который вы предоставили @svick, чтобы вы только извлекали статьи с определенной даты? Также есть функция поиска, чтобы она возвращала все статьи на основе определенного слова поиска? – Ebikeneser

Смежные вопросы