【问题标题】:Get user attribution link from Wikipedia API从 Wikipedia API 获取用户归因链接
【发布时间】:2019-01-01 12:06:12
【问题描述】:

我是一个一直在使用 Wikipedia API 的新手,并且想出了很多东西,但最后一个让我抓狂。

我已经能够找到我需要的 wiki 页面,然后按照文档 here 利用 pageids 获取图像的直接链接。

page_id = '1649237' 
image_url_base = 'https://ja.wikipedia.org/w/api.php?' 
    image_params = {
            "action": "query",
            "format": "json",
            "prop": "images",
            "pageids": page_id
            }
    image_url = wiki_image_url_base + page_id
    r = requests.get(url = wiki_image_url_base, params = image_params).json()
    
    image_file_name = str(r['query']['pages'][ja_page_id]['images'][0]['title'])

然后已经能够使用image_file_name 来创建指向主文件的链接,如下所示:

https://upload.wikimedia.org/wikipedia/commons/9/9e/Flag_of_Japan.svg

这似乎给出了奇怪的结果。对于我的脚本,我真的想要页面上的顶部图像,但这似乎会返回各种结果。

我卡住的地方是我不知道如何让这个页面上的文档工作:

https://www.mediawiki.org/wiki/API:Imageinfo

我真正想要的是图片的直接链接 URL 和归属链接。如果归因链接变得太复杂,我什至会很高兴能够获得指向此页面之类的图像的链接:

https://en.wikipedia.org/w/index.php?curid=32376184

这个 ImageInfo API 似乎可以工作,但我无法让它工作......我确定是我......

谢谢你帮助我。

【问题讨论】:

    标签: python python-3.x python-requests wikipedia-api


    【解决方案1】:

    我想你已经阅读了https://www.mediawiki.org/wiki/API:Imageinfo 中的 Python 示例。如果您尝试打开文档提供的 url,您将很容易理解它是如何工作的。因为打开url后得到的就是通过requests库能得到的(https://www.mediawiki.org/wiki/Special:MyLanguage/API:Imageinfo好像效果不好,但是下面的参数效果很好)

    import requests
    from pprint import pprint
    page_id = '1649237' 
    image_url_base = 'https://ja.wikipedia.org/w/api.php' 
    image_params = {
                "action": "query",
                "format": "json",
                "prop": "images",
                "pageids": page_id
                }
    
    resp = requests.get(image_url_base, params=image_params)
    my_data = resp.json()
    pprint(my_data)
    
    first_img = my_data["query"]["pages"][page_id]["images"][0]["title"]
    
    for_img_details = "https://www.mediawiki.org/w/api.php?" # https://ja.wikipedia.org/w/api.php
    details_params = {
                "action": "query",
                "titles": "File:{}".format(first_img.split(":")[-1]),
                "prop": "imageinfo",
                "format": "json",
                "iiprop":"timestamp|user|url"
    }
    # action=query&generator=images&titles=Main%20Page&prop=info
    resp2 = requests.get(for_img_details, params=details_params)
    pprint(resp2.json())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2016-03-19
      • 1970-01-01
      相关资源
      最近更新 更多