如何使用 mediawiki api 获取维基百科文章中的所有 url(不仅仅是标题)?

How to get all url's ( not just titles ) in a wikipedia article using mediawiki api?

我正在使用维基媒体 api 从维基百科文章 'https://en.wikipedia.org/w/api.php?action=query&prop=links&redirects&pllimit=500&format=json' , but it is only giving a list of link titles , for example , Artificial Intelligence , wikipedia page has a link titled " delivery networks," , but the actual URL is "https://en.wikipedia.org/wiki/Content_delivery_network" 中检索所有可能的 URL,这正是我想要的

我已经替换了我以前的大部分答案,包括代码,以使用 Tgr 的答案中提供的信息,以防其他人想要示例 Python 代码。此代码主要基于 Mediawiki 中所谓的 'raw continuations'.

的代码。

我特意将每次调用请求的链接数限制为 5 个,以便可以证明多一种参数可能性。

import requests

def query(request):
    request['action'] = 'query'
    request['format'] = 'json'
    request['prop'] = 'info'
    request['generator'] = 'links'
    request['inprop'] = 'url'
    previousContinue = {}
    while True:
        req = request.copy()
        req.update(previousContinue)
        result = requests.get('http://en.wikipedia.org/w/api.php', params=req).json()
        if 'error' in result:
            raise Error(result['error'])
        if 'warnings' in result:
            print(result['warnings'])
        if 'query' in result:
            yield result['query']
        if 'continue' in result:
            previousContinue = {'gplcontinue': result['continue']['gplcontinue']}
        else:
            break

count = 0        
for result in query({'titles': 'Estelle Morris', 'gpllimit': '5'}):
    for url in [_['fullurl'] for _ in list(result.values())[0].values()]:
        print (url)

我在第一个回答中提到,如果 OP 想用人工智能做类似的事情,那么他应该从 'Artificial intelligence' 开始——注意大写。否则,搜索将从一个消歧页面开始,并且可能会出现这些页面的所有复杂情况。

使用生成器:

action=query& format=jsonfm& titles=Estelle_Morris& redirects& generator=links& gpllimit=500& prop=info& inprop=url

请参阅 generators and the info module 上的 API 文档。