用于在Wikipedia上进行编辑的API

时间:2016-10-28 22:05:42

标签: python parsing wikipedia wikipedia-api

我希望在编辑之前和之后获取维基百科页面上的编辑文本。我有这个网址:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dtbook PUBLIC "-//NISO//DTD dtbook 2005-2//EN" "http://www.daisy.org/z3986/2005/dtbook-2005-2.dtd">
<dtbook xmlns="http://www.daisy.org/z3986/2005/dtbook/" xmlns:m="http://www.w3.org/1998/Math/MathML" version="2005-2" xml:lang="eng">
    <head />
    <book>
        <frontmatter><doctitle /></frontmatter>
        <bodymatter>
            <level1>
            <p>Test</p>
                <m:math xmlns:dtbook="http://www.daisy.org/z3986/2005/dtbook/" id="math0001" dtbook:smilref="nativemathml.smil#math0001" altimg="nativemathml0001.png" alttext="sigma-summation UnderScript i equals zero OverScript infinity EndScripts x Subscript i" overflow="scroll">
                    <m:mrow>
                        <m:mstyle displaystyle="true">
                            <m:munderover>
                                <m:mo>∑</m:mo>
                                <m:mrow>
                                    <m:mi>i</m:mi>
                                    <m:mo>=</m:mo>
                                    <m:mn>0</m:mn>
                                </m:mrow>
                                <m:mi>∞</m:mi>
                            </m:munderover>
                            <m:mrow>
                                <m:msub>
                                    <m:mi>x</m:mi>
                                    <m:mi>i</m:mi>
                                </m:msub>
                            </m:mrow>
                        </m:mstyle>
                    </m:mrow>
                </m:math>
            </level1>
        </bodymatter>
        <rearmatter><level1><p /></level1></rearmatter>
    </book>
</dtbook>

但是,我想要json格式的文本,以便我可以直接在我的程序中使用它。 MediaWiki是否提供了在编辑后为我提供新旧文本的API,或者我是否必须使用解析器解析HTML页面?

2 个答案:

答案 0 :(得分:1)

试试这个:https://www.mediawiki.org/wiki/API:Revisions

有一些选项可供使用,例如:

  1. rvparse:解析修订内容。出于性能原因,如果使用此选项,则rvlimit强制为1.

  2. rvdifftotext:将每个修订版差异化的文本。

  3. 如果那些失败仍然

    1. rvprop / ids:获得revid,从1.16开始,获得parentid
    2. 然后,一旦获得父ID,您就可以比较两者的文本。

答案 1 :(得分:0)

在JavaScript中留下注释,说明如何查询Wikipedia API以获取所有最近的编辑。

在某些情况下,文章被锁定,无法看到最近的编辑。

?这篇文章由于故意破坏而受到半保护

按以下方式查询API允许读取所有编辑内容。

fetch("https://en.wikipedia.org/w/api.php?action=query&origin=*&prop=revisions&format=json&titles=Timeline_of_the_2020_United_States_presidential_election&rvslots=*&rvprop=timestamp|user|comment|content")
.then(v => v.json()).then((function(v){
    main.innerHTML = JSON.stringify(v, null, 2)
 })
)
<pre id="main" style="white-space: pre-wrap"></pre>

另请参阅How to get Wikipedia content as text by API?