0

所以标题有点混乱我猜..

我有一个我一直在编写的脚本,当我打开我的 shell 时,它会显示一些随机数据和其他非必需项。我使用 grequests 进行 API 调用,因为我使用了多个 URL。对于我的天气数据,我使用 Wea​​therUnderground 的 API,因为它会提供活动警报。警报条件数据位于不同的页面上。我想不通的是如何在 grequests 对象发出请求时插入适当的名称。这是我拥有的代码:

URLS = ['http://api.wunderground.com/api/'+api_id+'/conditions/q/autoip.json',
        'http://www.ourmanna.com/verses/api/get/?format=json',
        'http://quotes.rest/qod.json',
        'http://httpbin.org/ip']

requests = (grequests.get(url) for url in URLS)
responses = grequests.map(requests)
data = [response.json() for response in responses]

#json parsing from here

在 URL 中'http://api.wunderground.com/api/'+api_id+'/conditions/q/autoip.json',我需要向条件警报发出API 请求以检索我需要的数据。如何在不重写第四个 URLS 字符串的情况下做到这一点?

我试过了

pages = ['conditions', 'alerts']
URL = ['http://api.wunderground.com/api/'+api_id+([p for p in pages])/q/autoip.json']

但是,我相信你们中的一些经验丰富的程序员都知道,抛出和异常。那么如何遍历这些页面,或者我必须写出两个完整的 URL?

谢谢!

4

1 回答 1

1

好的,我实际上能够通过使用简单的 for循环来弄清楚如何在 grequests 对象中调用每个单独的页面。这是我用来产生预期结果的代码:

import grequests

pages = ['conditions', 'alerts']
api_id = 'myapikeyhere' 

for p in pages:
    URLS = ['http://api.wunderground.com/api/'+api_id+'/'+p+'/q/autoip.json',
            'http://www.ourmanna.com/verses/api/get/?format=json',
            'http://quotes.rest/qod.json',
            'http://httpbin.org/ip']

    #create grequest object and retrieve results
    requests = (grequests.get(url) for url in URLS)
    responses = grequests.map(requests)
    data = [response.json() for response in responses]

    #json parsing from here

我仍然不确定为什么我以前无法弄清楚这一点。

grequests 库的文档在这里

于 2017-04-25T20:58:02.860 回答