首页 > 解决方案 > 将维基文本从维基词典更改为可读文本

问题描述

如何将 Wikitext(如 Witkionary 源代码中所见)交换为可读文本(如 Wiktionary 网站中所见)。

所以这个来源:

{{ru-verb|ходи́ть|impf|pf=сходи́ть}}

应视为:

ходи́ть • (xodítʹ) impf (perfective сходи́ть)

它在 Wikitext 中被称为模板,但是我在文档中找不到如何将该模板更改为人类可读的文本。

以前有人遇到过类似的问题吗?

标签: mediawiki-apiwiktionarywikitext

解决方案


使用解析 API 获取 HTML 输出

您可以通过将 HTML 传递给浏览器来呈现 HTML...

我不认为 MediaWiki 可以直接生成纯文本输出,但如果需要,可以使用第三方库。在 Python 中,使用Beautiful Soup及其get_text方法,代码如下所示:

>>> BeautifulSoup(
        requests.get(
            'https://en.wiktionary.org/w/api.php?action=parse&text=%7B%7Bru-verb|%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7Cimpf|pf=%D1%81%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7D%7D&prop=text&title=page_title&formatversion=2&format=json'
        ).json()['parse']['text']
    ).get_text(strip=True)
'ходи́ть•(xodítʹ)impf(perfectiveсходи́ть)'

更新:

PHP中的使用strip_tags和功能:html_entity_decode

$ php -a
Interactive mode enabled

php > $json = file_get_contents('https://en.wiktionary.org/w/api.php?action=parse&text=%7B%7Bru-verb|%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7Cimpf|pf=%D1%81%D1%85%D0%BE%D0%B4%D0%B8%CC%81%D1%82%D1%8C%7D%7D&prop=text&title=page_title&formatversion=2&format=json');
php > $json = json_decode($json, TRUE);
php > $html = $json['parse']['text'];
php > $pain_text = strip_tags(html_entity_decode ($html));
php > echo $pain_text;
ходи́ть • (xodítʹ) impf (perfective сходи́ть)

推荐阅读