Получите первые строки Статьи Википедии

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

12
задан Damjan Pavlica 26 October 2015 в 13:53
поделиться

8 ответов

Я нашел следующее решение: Использование xpath-запроса в XHTML-Source-Code (я взял печатную версию, потому что она короче, но она также работает в обычной версии).

//html/body//div[@id='bodyContent']/p[1]

Это работает на немецком и английском языках Мы с Википедией не нашли статьи, в которой не выводился бы первый абзац. Решение также довольно быстрое, я также думал взять только первые x символов xhtml, но это сделало бы xhtml недействительным.

Если кто-то ищет здесь JAVA-код, это значит:

private static DocumentBuilderFactory dbf;
static {
    dbf = DocumentBuilderFactory.newInstance();
    dbf.setAttribute("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
}
private static XPathFactory xpathf = XPathFactory.newInstance();
private static String xexpr = "//html/body//div[@id='bodyContent']/p[1]";


private static String getPlainSummary(String url) {
    try {
        // OPen Wikipage
        URL u = new URL(url);
        URLConnection uc = u.openConnection();
        uc.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090616 Firefox/3.5");
        InputStream uio = uc.getInputStream();
        InputSource src = new InputSource(uio);

        //Construct Builder
        DocumentBuilder builder = dbf.newDocumentBuilder();
        Document docXML = builder.parse(src);

        //Apply XPath
        XPath xpath = xpathf.newXPath();
        XPathExpression xpathe = xpath.compile(xexpr);
        String s = xpathe.evaluate(docXML);

        //Return Attribute
        if (s.length() == 0) {
            return null;
        } else {
            return s;
        }
    }
    catch (IOException ioe) {
        logger.error("Cant get XML", ioe);
        return null;
    }
    catch (ParserConfigurationException pce) {
        logger.error("Cant get DocumentBuilder", pce);
        return null;
    }
    catch (SAXException se) {
        logger.error("Cant parse XML", se);
        return null;
    }
    catch (XPathExpressionException xpee) {
        logger.error("Cant parse XPATH", xpee);
        return null;
    }
}

используйте его, вызвав getPlainSummary ("http://de.wikipedia.org/wiki/Uma_Thurman");

0
ответ дан 2 December 2019 в 19:31
поделиться

У меня была такая же потребность, и я написал для этого некоторый код Python.

Скрипт загружает статью из Википедии с заданным именем, анализирует ее с помощью BeautifulSoup и возвращает несколько первых абзацев.

12155] Код находится по адресу http://github.com/anandology/sandbox/blob/master/wikisnip/wikisnip.py .

3
ответ дан 2 December 2019 в 19:31
поделиться

Википедия предлагает скачать тезисы . Хотя это довольно большой файл (в настоящее время 2,5 ГБ ), он предлагает именно ту информацию, которую вы хотите, для всех статей.

2
ответ дан 2 December 2019 в 19:31
поделиться

Я открыл статью Альберта Эйнштейна в Firefox и нажал «Просмотреть исходный код». Его довольно легко разобрать с помощью парсера HTML. Вам следует сосредоточиться на

и удалить из него другой HTML-код.

1
ответ дан 2 December 2019 в 19:31
поделиться

Вам нужен синтаксический анализатор, который может читать разметку Википедии. Попробуйте WikiText или парсеры, входящие в состав XWiki .

Это позволит вам игнорировать все, что вам не нужно (заголовки, таблицы).

1
ответ дан 2 December 2019 в 19:31
поделиться

Как и следовало ожидать, вам, вероятно, придется разобрать исходный код, скомпилированный HTML, или оба. Однако Википедия: Lead_section может дать вам некоторое представление о том, чего ожидать от хорошо написанных статей.

0
ответ дан 2 December 2019 в 19:31
поделиться

Например, если у вас есть результат в виде строки вы найдете текст:

<div id="bodyContent">

, а после этого индекса вы найдете первый

<p>

, который будет индексом первого упомянутого вами абзаца.

попробуйте этот URL Ссылка на контент (просто работает в браузере)

1
ответ дан 2 December 2019 в 19:31
поделиться

Ну, при использовании самого источника Wiki вы можете просто вырезать все шаблоны в начале. Это может работать достаточно хорошо для большинства статей, у которых есть информационные окна или некоторые сообщения вверху.

Однако некоторые статьи могут помещать начальную аннотацию в сам шаблон, так что там будет немного сложно.

Другой способ, возможно, более надежным было бы взять содержимое первого тега

, который появляется непосредственно в тексте статьи (т.е. не вложен в таблицу или что-то в этом роде). Это должно удалить информационные блоки и другие вещи в начале, поскольку они, вероятно (я не совсем уверен)

s или
s.

Обычно, Википедия написана для человеческого употребления с минимальной поддержкой чего-либо семантического.

0
ответ дан 2 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: