每次新闻API的Python请求都会响应

时间:2017-07-17 15:09:12

标签: python python-requests

我正在尝试在python程序中使用News API,由于某种原因,无论如何我都无法获得200响应。我对请求库非常不熟悉,所以也许我做的不对,但这就是我的代码:

api = XXXXXXXXXX

def get_json_response(apiKey, resource='google-news', sortBy='latest'):
    url = 'https://newsapi.org/v1/articles'
    headers = { 'source': resource,
                'apiKey': apiKey,
                'sortBy': sortBy}

    r = requests.get(url, headers=headers)
    print(r.status_code)

get_json_response(api)

,输出始终为401。 但奇怪的是,如果我只是将“https://newsapi.org/v1/articles/?source=google-news&apiKey=XXXXXXXXX”放在浏览器中,它会给出正确的json响应,因此我使用请求的方式就不对了。

有什么想法吗?提前致谢

编辑: 不完全是一个优雅的解决方案,但我将线路切换到:

r = requests.get(url + '/?source=' + resource + '&sortBy=' + sortBy + '&apiKey=' + apiKey)

这很有效,但我仍然想知道未来如何正确使用请求包。

1 个答案:

答案 0 :(得分:3)

根据提供的“工作”链接,它需要URL参数,而不是请求中的标题,所以:

def get_json_response(apiKey, resource='google-news'):
    url = 'https://newsapi.org/v1/articles/'
    params = {'source': resource,
              'apiKey': apiKey}
    r = requests.get(url, params=params)
    print(r.status_code)
    # etc.