api请求参数被忽略

api request parameters are ignored

此代码按预期工作并显示 3 个最近的维基百科编辑。

我的问题是,如果我取消注释第二行 URL,我应该得到 Urmi27 三次或 None 如果用户未列出。 但是我得到了两个 URL 的相同列表。 api 请求是否忽略了“操作”?

import requests

S = requests.Session()

URL = "https://en.wikipedia.org/w/api.php"

#URL = "https://en.wikipedia.org/w/api.php?action=feedcontributions&user=Urmi27"

PARAMS = {
    "format": "json",
    "rcprop": "comment|loginfo|title|ids|sizes|flags|user",
    "list": "recentchanges",
    "action": "query",
    "rclimit": "3"
}

R = S.get(url=URL, params=PARAMS)
DATA = R.json()

RECENTCHANGES = DATA['query']['recentchanges']

for rc in RECENTCHANGES:
    print (rc['user'])

您在两个地方定义 GET 参数(在 URL 和 PARAMS 字典中)并且 API 优先考虑 PARAMS

queryfeedcontributions 操作非常不同,使用不同的参数和不同的 return 格式。

要使用 feedcontributions 操作,您需要这样的东西:

import requests
import xml.etree.ElementTree as ET

S = requests.Session()

URL = "https://en.wikipedia.org/w/api.php"


PARAMS = {
"action":"feedcontributions",
"user":"Urmi27"
}

R = S.get(url=URL, params=PARAMS)
xml_tree = ET.fromstring(R.content)


for child in xml_tree:
print(child.tag, child.attrib)
for channel in child:
    for elements in channel:
        if elements.tag == "description":
            print(elements.text)
   

API REF