访问API时的错误处理

2024-09-27 23:00:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过python访问一个API(Scopus),在下面的for循环中下载多个摘要:

for t in eid:
    url = "http://api.elsevier.com/content/abstract/eid/"+str(t)+"?view=FULL"
    #    url = "http://api.elsevier.com/content/abstract/eid/2-s2.0-84934272190?view=FULL"
    resp2 = requests.get(url,
                         headers={'Accept':'application/json',
                         'X-ELS-APIKey': MYAPIKEY})

    retrieval = resp2.json()

    dep = retrieval['abstracts-retrieval-response']['item']['bibrecord']['head']['author-group']
    sub = retrieval['abstracts-retrieval-response']['subject-areas']['subject-area']
    iD = retrieval['abstracts-retrieval-response']['coredata']['intid']
    date = retrieval['abstracts-retrieval-response']['coredata']['prism:coverDate']

    department.append(dep)
    subj.append(sub)
    ident.append(iD)
    dates.append(date)

但是,在这样做之后,我继续收到以下错误(总是在for循环的不同点)。 有人告诉我错误处理是一种解决方法,但是作为Python新手,我不知道这是什么。有人能帮忙吗?谢谢

编辑:这是整个错误消息,应该包括所有正确的信息(抱歉,它很长)

^{pr2}$

Tags: comabstractviewapihttpurlforresponse
1条回答
网友
1楼 · 发布于 2024-09-27 23:00:15

不幸的是,您没有包含输出中提到的“上述异常”。在

但一般来说,当异常情况(如错误)在代码执行期间发生时,您可以捕获该异常并进行处理。一个例外是一个对象,上面有关于出错的信息。一般来说,异常处理是一个很大的主题,您可以从以下位置开始阅读:https://docs.python.org/3/tutorial/errors.html

处理异常的一个例子就是报告情况和异常。这可以让你洞察出了什么问题:

for t in eid:
    try:
        url = "http://api.elsevier.com/content/abstract/eid/"+str(t)+"?view=FULL"
        #    url = "http://api.elsevier.com/content/abstract/eid/2-s2.0-84934272190?view=FULL"
        resp2 = requests.get(url,
                             headers={'Accept':'application/json',
                             'X-ELS-APIKey': MYAPIKEY})

        retrieval = resp2.json()

        dep = retrieval['abstracts-retrieval-response']['item']['bibrecord']['head']['author-group']
        sub = retrieval['abstracts-retrieval-response']['subject-areas']['subject-area']
        iD = retrieval['abstracts-retrieval-response']['coredata']['intid']
        date = retrieval['abstracts-retrieval-response']['coredata']['prism:coverDate']

        department.append(dep)
        subj.append(sub)
        ident.append(iD)
        dates.append(date)
    except Exception as exception:
        print (url) # 'print' will only work on a console
        print (exception)

[编辑]

我查看了错误消息,您尝试连接的服务器似乎关闭了连接。另见Why is host aborting connection?,尽管原因可能完全不同。试试上面的代码,看看这是经常发生还是只发生在特定的URL上

[/编辑]

要进行一些重试,请使用:

^{pr2}$

注:我还没有测试过这个,但它应该能传达总体思想。 “睡眠”是为了让服务器喘口气。。。在

相关问题 更多 >

    热门问题