【问题标题】:How to use Signature or User ID to get user's information?如何使用 Signature 或 User ID 获取用户信息?
【发布时间】:2020-05-13 21:30:32
【问题描述】:

我是 Wikimedia 的初学者,我正在使用 Wiki API 来完成我的项目。我的数据集如下所示:

rev_id | comment | timestamp | page_id | page_title | user_id | user_text
-- -- -- -- -- -- -- -- -- -- -- --
352194497 | Welcome to Wikipedia | 2010-03-26T18:16:48Z | 26709696 | 116.197.206.138 | 8356162 | Mlpearc

我正在尝试查找这些评论海报的一些用户信息。但是,我发现这里的“user_text”不是用户名而是签名。如果我使用官方 API 演示 get_users.py 来获取信息,结果是错误的,因为某些签名中有空格,但用户名都是单字。就像在下面的代码中一样,我可以使用Catrope|Bob 获取 Catrope 和 Bob 的信息。但如果我使用Catrope|Tide rolls,如果 Tide rolls 是签名,它就不起作用。

import requests

S = requests.Session()

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

PARAMS = {
    "action": "query",
    "format": "json",
    "list": "users",
    "ususers": "Catrope|Tide rolls",
    "usprop": "blockinfo|groups|editcount|registration|emailable|gender"
}

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

USERS = DATA["query"]["users"]

for u in USERS:
    print(str(u["name"]) + " has " + str(u["editcount"]) + " edits.")

所以我的问题是,我们有什么方法可以使用 API 通过签名获取用户信息?而且由于我们这里也有 page_id 和 user_id,这些信息会有帮助吗?提前非常感谢您!

更新:我在这里使用Bob Ben 作为假身份证。现在它被一个真实的取代了。使用_替换空格解决的问题。(感谢AXO的提醒。)

【问题讨论】:

    标签: python mediawiki wikipedia wikipedia-api


    【解决方案1】:

    你没有提到你得到的错误和回溯。只要用户名存在,代码示例就应该可以正常工作,即使用户名中有空格。

    但是user account "Bob Ben" is not registered。在这种情况下,API 会回复 {'name': 'Bob Ben', 'missing': ''}

    所以你的代码可能是:

    for u in USERS:
        if 'missing' not in u:
            print(u["name"] + " has " + str(u["editcount"]) + " edits.")
        else:
            print(u["name"], "is not registered.")
    

    顺便说一句,如果出于某种原因您不想使用空格,您可以使用_(下划线)来代替。 A blank space is equivalent with an underscore.

    关于“用户信息”,我不确定您要查找的信息类型。根据API:Users,可以使用usprop 参数得到blockinfo|groups|groupmemberships|implicitgroups|rights|editcount|registration|emailable|gender|centralids|cancreate。但是如果要获取其他一些信息,例如用户页面上的信息,那么您可能需要使用API:Get the contents of a page中提到的方法之一来获取用户页面的内容,然后编写程序查找您需要的信息。

    【讨论】:

    • 嗨 AXO!非常感谢你的回复。是的,Bob Ben 是我用来解释的“假”名字。万一它引起混乱,我已经更新了一个真实的用户名。再次感谢您!
    • 对了,请问有没有其他属性可以用来获取用户信息?就像这里我们已经有了编辑计数和注册。你知道我在哪里可以找到其他用途的功能吗?喜欢在用户页面上获得自我介绍吗?谢谢!
    • 太棒了!这就是我要找的。非常感谢,AXO!
    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2011-02-10
    • 2016-12-20
    • 2021-05-22
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多