我使用wikimedia api从维基百科文章“https://en.wikipedia.org/w/api.php?action=query&prop=links&redirects&pllimit=500&format=json”中检索所有可能的URL,但它只提供链接标题列表,例如,人工智能,维基百科页面有一个标题为链接的链接“投放网络”,但实际网址是“https://en.wikipedia.org/wiki/Content_delivery_network”,这就是我想要的
答案 0 :(得分:2)
使用发电机:
请参阅generators和the info
module上的API文档。
答案 1 :(得分:1)
我已经替换了我以前的大多数答案,包括代码,以使用Tgr的答案中提供的信息,以防其他人想要示例Python代码。此代码主要基于Mediawiki的代码,用于所谓的原始延续'。
我故意将每次调用请求的链接数量限制为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希望用人工智能做类似事情,那么他应该从“人工智能”开始。 - 注意资本化。否则,搜索将从消歧页面开始,以及那些可能出现的所有复杂情况。