【问题标题】:Grab all tags of a specific type from json block [duplicate]从json块中获取特定类型的所有标签[重复]
【发布时间】:2019-07-04 12:28:04
【问题描述】:

我正在尝试创建一个网络应用程序,该应用程序将返回给定维基百科页面的所有编辑器列表。我目前的设置如下:

from flask import Flask, request, render_template
import json,urllib.request

app = Flask(__name__)

@app.route('/')
def my_form():
    return render_template('my-form.html')

@app.route('/', methods=['POST'])
def my_form_post():
    text = request.form['text']
    processed_text = text.upper()


    data = urllib.request.urlopen(f'https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles={text}&rvlimit=500&rvprop=timestamp%7Cuser%7Ccomment&format=json').read()
    output = json.loads(data)

    return (output)

现在我收到'字典不可调用'的错误,但如果我直接打印数据而不是输出,则没有这样的错误。我的实际问题是如何获取查询>>页面中嵌入的所有“用户”标签并将其存储在列表中以供打印。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    我能够从使用以下列表理解返回的 json 中提取用户列表。如果返回的 json 中可能缺少键,则需要相应地更新以处理这些情况:

    output = json.loads(data)
    users = [revision.get('user') for value in output.get('query').get('pages').values() for revision in value.get('revisions')]
    

    【讨论】:

    • 这看起来不错(谢谢!)但我收到错误“名称'值'未定义。”现在我的函数的结尾是:users = [revision.get('user') for revision in value.get('revisions') for value in output.get('query').get('pages').values()] return (','.join(users))。有什么想法吗?
    • 这很奇怪。你能告诉我你在查询中为 {text} 使用了什么值吗?我可以尝试测试那个端点
    • 我使用“Effective_altruism”作为{text}
    • 我现在已经更新了代码,它应该可以工作了。将 for 循环放在错误的一侧(DOH!)。另一个问题是 wiki 查询区分大小写。当您在代码中转换为 upper 时,返回的查询为空。将其保留在您的评论中会返回用户
    • 完美运行。谢谢!
    【解决方案2】:
    [revision.get('user') for revision in list(da.get('query').get('pages').values())[0].get('revisions')]
    

    我试试是工人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2021-01-22
      • 2018-12-23
      • 2011-09-27
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多