如何查询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 中运行存储过程?

如何在不使用窗口函数的情况下在大查询中选择 max(date)?

如何在不使用内置函数的情况下计算数字的平方根? [重复]

如何停止正在运行的 MySQL 查询?