Извлечение данных из вики - PullRequest
0 голосов
/ 24 февраля 2011

В настоящее время я разрабатываю вики и буду публиковать информацию в вики. Тем не менее, мне придется получать информацию из вики, используя код Python. Например, если у меня есть вики-страница о компании, скажем, Coca Cola, мне понадобится вся информация (текст), которую я разместил в вики, для анализа в моей программе на python. Пожалуйста, дайте мне знать, если есть способ сделать это.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Вы можете использовать api.php , чтобы получить исходный текст Википедии.Включает только актуальную статью.

Я написал этот для немецкой википедии, так что он работает с умлаутами.Некоторые специальные символы некоторых других языков не работают (русский работает, так что это могут быть некоторые азиатские языки).Это рабочий пример:

import urllib2
from BeautifulSoup import BeautifulStoneSoup
import xml.sax.saxutils

def load(lemma, language="en", format="xml"):
    """ Get the Wikipedia Source Text (not the HTML source code) 

        format:xml,json, ...
        language:en, de, ...

        Returns None if page doesn't exist
    """
    url       = 'http://' + language + '.wikipedia.org/w/api.php' + \
                '?action=query&format=' + format + \
                '&prop=revisions&rvprop=content' + \
                '&titles=' + lemma
    request   = urllib2.Request(url)
    handle    = urllib2.urlopen(request)
    text      = handle.read()
    if format == 'xml':
        soup = BeautifulStoneSoup(text)
        rev  = soup.rev
        if rev != None:
            text = unicode(rev.contents[0])
            text = xml.sax.saxutils.unescape(text)
        else:
            return None
    return text

print load("Coca-Cola")

Если вы хотите получить реальный исходный код, вам нужно изменить URL и часть с BeautifulStoneSoup.

BeautifulStoneSoup анализирует XML, BeautifulSoup анализирует HTML.Оба являются частью пакета BeautifulSoup .

1 голос
/ 24 февраля 2011

Можно загрузить страницу с помощью urllib или httplib, а затем проанализировать ее с помощью регулярных выражений, чтобы извлечь именно ту информацию, которую вы хотите. Это может быть долго, но это относительно легко сделать.

Возможно, есть другие решения для анализа источника страницы, парсеры или что-то в этом роде; Я не знаю достаточно о них.

0 голосов
/ 12 сентября 2011

В прошлом для такого рода вещей я использовал SemanticMediawiki и нашел, что он работает достаточно хорошо.Это не очень гибко, хотя, поэтому, если вы делаете что-то сложное, вы обнаружите, что пишете пользовательские плагины или делегируете внешнему сервису для выполнения работы.

В конечном итоге я написал много веб-сервисов на pythonсделать дополнительную обработку.

...