从维基百科 API 获取用户归属 link
Get user attribution link from Wikipedia API
我是一个新手,一直在使用维基百科 API 并且弄明白了很多东西,但是最后一个让我抓狂。
我已经能够找到我需要的 wiki 页面,然后按照文档 here 利用 pageids
直接 link 获取图像。
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
创建一个link到主文件,像这样:
https://upload.wikimedia.org/wikipedia/commons/9/9e/Flag_of_Japan.svg
这似乎给出了奇怪的结果。对于我的脚本,我真的想要页面上的顶部图像,但这似乎 return 各种结果。
我被卡住的地方是我不知道如何让这个页面上的文档工作:
https://www.mediawiki.org/wiki/API:Imageinfo
我真正想要的是图片的直接 link URL 和归因的 link。如果属性 link 变得太复杂,我什至会很高兴能够将 link 用于图像,例如此页面:
https://en.wikipedia.org/w/index.php?curid=32376184
似乎这个 ImageInfo API 可以工作,但我不能让它工作...我确定是我...
谢谢你帮助我。
我想您已经阅读了 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())
我是一个新手,一直在使用维基百科 API 并且弄明白了很多东西,但是最后一个让我抓狂。
我已经能够找到我需要的 wiki 页面,然后按照文档 here 利用 pageids
直接 link 获取图像。
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
创建一个link到主文件,像这样:
https://upload.wikimedia.org/wikipedia/commons/9/9e/Flag_of_Japan.svg
这似乎给出了奇怪的结果。对于我的脚本,我真的想要页面上的顶部图像,但这似乎 return 各种结果。
我被卡住的地方是我不知道如何让这个页面上的文档工作:
https://www.mediawiki.org/wiki/API:Imageinfo
我真正想要的是图片的直接 link URL 和归因的 link。如果属性 link 变得太复杂,我什至会很高兴能够将 link 用于图像,例如此页面:
https://en.wikipedia.org/w/index.php?curid=32376184
似乎这个 ImageInfo API 可以工作,但我不能让它工作...我确定是我...
谢谢你帮助我。
我想您已经阅读了 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())