You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python通过Twitter用户ID/用户名查询Wikidata Q-ID?

如何通过Twitter用户名/ID批量获取Wikidata Q-ID

问题背景

我拥有一批已验证的Twitter用户ID及用户名列表:

data['screen_name'] = [MOFAJapan_en, serenawilliams, JeffBezos ....]
data['twitter_ids'] =  [303735625, 26589987, 15506669 ....]

希望获取它们对应的Wikidata Q-ID,预期结果如下:

q_id_list = [Q222241, Q11459, Q312556 ....]

遇到问题:搜索MOFAJapan_en或“日本外务省”时,Wikidata API无法识别,但MOFAJapan存在对应的Wikidata页面(Q222241)。已知Twitter用户名对应的Wikidata属性为P2002,请问如何在未知Q-ID的情况下进行查询?


解决方案

1. 使用Wikidata SPARQL查询(推荐批量场景)

直接通过P2002属性匹配Twitter用户名,只要Wikidata条目里记录了对应属性值,就能精准匹配到Q-ID,无需依赖实体名称搜索。

单个用户名查询示例

SELECT ?item WHERE {
  ?item wdt:P2002 "MOFAJapan_en" .
}

批量用户名查询示例

使用VALUES子句一次性传入多个用户名,返回所有匹配结果:

SELECT ?screenName ?item WHERE {
  VALUES ?screenName { "MOFAJapan_en" "serenawilliams" "JeffBezos" }
  ?item wdt:P2002 ?screenName .
}

注:如果MOFAJapan_en未在Q222241的P2002属性中记录,该查询不会返回结果——此时需确认该Twitter账号是否为Q222241实体的关联账号,或是否存在独立的Wikidata条目。

用Twitter ID查询(对应你的twitter_ids列表)

Wikidata属性P2003对应Twitter用户ID,也可以用这个属性查询:

SELECT ?twitterId ?item WHERE {
  VALUES ?twitterId { "303735625" "26589987" "15506669" }
  ?item wdt:P2003 ?twitterId .
}

2. 使用Wikidata API单次查询

通过wbsearchentities接口,指定property参数为P2002,直接基于属性值搜索:

核心请求参数:

  • action=wbsearchentities
  • search=MOFAJapan_en
  • language=en
  • type=item
  • property=P2002

批量查询时可循环遍历用户名列表逐个调用,但需注意Wikidata API的请求频率限制。

关键注意事项

  • 匹配时严格区分大小写,需确保输入的用户名/ID与Wikidata属性值完全一致
  • 若查询无结果,说明该Twitter账号未在Wikidata中关联对应实体,需手动确认或补充条目
  • 批量场景优先使用SPARQL查询,可大幅减少请求次数,提升效率

内容的提问来源于stack exchange,提问作者Yash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:20:31