如何查询API函数 在知道中文意思的情况下如何查英文的API函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查询API函数 在知道中文意思的情况下如何查英文的API函数相关的知识,希望对你有一定的参考价值。
用Google翻译把关键词翻译成英文,再用英文检索不就OK了如果检索到多个,你不确定哪个的话,再把它们的函数说明翻译成中文看
不过还是建议你好好学学英文,能够看懂大部分函数说明就好了 参考技术A 只有按关键词汇的英文探索查找
如何在没有页面指示的情况下遍历 API 查询中的页面?
【中文标题】如何在没有页面指示的情况下遍历 API 查询中的页面?【英文标题】:How to iterate through pages in an API query with no page indication? 【发布时间】:2018-09-14 04:05:57 【问题描述】:我已经使用这个 JSON 查询进行了 api 调用:
import requests
import json
import pandas as pd
url = ("https://api.meetup.com/2/groups?zip=b1+1aa&offset=0&format=json&lon=-1.89999997616&category_id=34&photo-host=public&page=500&radius=200.0&fields=&lat=52.4799995422&order=id&desc=false&sig_id=243750775&sig=ed49065d620a34c10e1f0f91dd58da2e36547af1")
data = requests.get(url).json()
df = pd.io.json.json_normalize(data['results'])
这样就变成了一个数据框,但是,我还有 5 个 url 页面要查询,如下所示:
url2 = ("https://api.meetup.com/2/groups?zip=b1+1aa&offset=1&format=json&lon=-1.89999997616&category_id=34&photo-host=public&page=500&radius=200.0&fields=&lat=52.4799995422&order=id&desc=false&sig_id=243750775&sig=ed49065d620a34c10e1f0f91dd58da2e36547af1")
和url3
类似,只是通过offset=2
更改页面等是关键。
我想知道是否可以使用 for 循环遍历所有这些页面。
【问题讨论】:
有没有关于这个 API 的文档?因为只看网址我就看到了page=500
。您可以做的另一件事是在访问其他页面时尝试自己查看模式。你提到看到偏移模式。您可能想查看循环内的f strings 或.format
您还应该使用字典正确格式化您的请求,并使用 payload
输入参数
@MattR 谢谢。那 page=500 是你想要每页的查询数,所以我输入我想要每页的最大值。
【参考方案1】:
首先不要对url中的查询字符串进行硬编码,而是将查询数据作为dict传递给request
,即:
url = "https://api.meetup.com/2/groups"
querydict =
"zip":"b1+1aa",
"offset": 0,
"format":"json",
"lon":-1.89999997616,
"category_id": 34,
"photo-host":"public",
# etc
response = requests.get(url, params=querydict)
然后你所要做的就是循环直到你拥有你想要的所有内容,在每次迭代时更新querydict["offset"]
:
url = "https://api.meetup.com/2/groups"
querydict =
"zip":"b1+1aa",
"offset": 0,
"format":"json",
"lon":-1.89999997616,
"category_id": 34,
"photo-host":"public",
# etc
while True:
response = requests.get(url, params=querydict)
# check your response status, check the json data
# etc
if we_have_enough(response):
break
# ok let's fetch next page
querydict["offset"] += 1
【讨论】:
谢谢@bruno desthuilliers。不过,我不清楚if we_have_enough(response)
部分。请问您能否简要解释一下它是什么以及我将we_have_enough
变量定义为什么?
这只是说明您可能想在给定点突破的一种方式——要么是因为您不想要整个数据集,要么是因为没有更多数据要获取。您如何测试这取决于确切的 API(参见关于检查响应状态和返回的内容等的评论),因此实现这部分是您的工作。【参考方案2】:
Meetup 版本 2 API 以包含 next
键的 meta
字典响应,您应该使用它。
url = '...'
while url:
data = requests.get(url).json()
... do something with data ...
url = data['meta'].get('next')
【讨论】:
好吧,我可能会感到困惑,但do something with data
是什么?那是if语句吗? @丹尼尔罗斯曼
不,这是您真正想要对已下载的数据执行的操作。将其放入数据框或其他任何内容中。以上是关于如何查询API函数 在知道中文意思的情况下如何查英文的API函数的主要内容,如果未能解决你的问题,请参考以下文章
如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?
如何在不知道查询结果类型的情况下在 EF/VB.net 中运行存储过程?