首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Elsevier文章检索API获取全文

如何使用Elsevier文章检索API获取全文
EN

Stack Overflow用户
提问于 2021-09-15 09:39:57
回答 1查看 668关注 0票数 4

我想使用Elsevier文章检索API (https://dev.elsevier.com/documentation/FullTextRetrievalAPI.wadl)获得全文文件。

我使用httpx获取论文的信息,但是它只包含一些information.My代码如下:

代码语言:javascript
复制
import httpx
import time


def scopus_paper_date(paper_doi,apikey):
    apikey=apikey
    headers={
        "X-ELS-APIKey":apikey,
        "Accept":'text/xml'
         }

    timeout = httpx.Timeout(10.0, connect=60.0)
    client = httpx.Client(timeout=timeout,headers=headers)
    query="&view=FULL"
    url=f"https://api.elsevier.com/content/article/doi/" + paper_doi
    r=client.get(url)
    print(r)
    return r.text

y = scopus_paper_date('10.1016/j.solmat.2021.111326',myapikey)
y

结果如下:

代码语言:javascript
复制
<full-text-retrieval-response xmlns="http://www.elsevier.com/xml/svapi/article/dtd" xmlns:bk="http://www.elsevier.com/xml/bk/dtd" xmlns:cals="http://www.elsevier.com/xml/common/cals/dtd" xmlns:ce="http://www.elsevier.com/xml/common/dtd" xmlns:ja="http://www.elsevier.com/xml/ja/dtd" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:sa="http://www.elsevier.com/xml/common/struct-aff/dtd" xmlns:sb="http://www.elsevier.com/xml/common/struct-bib/dtd" xmlns:tb="http://www.elsevier.com/xml/common/table/dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xocs="http://www.elsevier.com/xml/xocs/dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:prism="http://prismstandard.org/namespaces/basic/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><coredata><prism:url>https://api.elsevier.com/content/article/pii/S0927024821003688</prism:url>....

我怎样才能得到这篇论文的全部数据,非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 14:07:53

这取决于你想要下载的报纸。

我修改了一下你发布的函数。现在它以JSON的形式获得响应,而不是XML (这只是我个人的偏好,您可以使用您喜欢的格式)。

代码语言:javascript
复制
import httpx
import time

def scopus_paper_date(paper_doi,apikey):
    apikey=apikey
    headers={
        "X-ELS-APIKey":apikey,
        "Accept":'application/json'
         }
    timeout = httpx.Timeout(10.0, connect=60.0)
    client = httpx.Client(timeout=timeout,headers=headers)
    query="&view=FULL"
    url=f"https://api.elsevier.com/content/article/doi/"+paper_doi
    r=client.get(url)
    print(r)
    return r

现在您可以检索所需的文档,然后必须解析它:

代码语言:javascript
复制
# Get document
y = scopus_paper_date('10.1016/j.solmat.2021.111326',my_api_key)
# Parse document
import json
json_acceptable_string = y.text
d = json.loads(json_acceptable_string)
# Print document
print(d['full-text-retrieval-response']['coredata']['dc:description'])

结果将是文档的dc:description,即摘要:

利用水的光电化学离解(PEC)技术生产分子氢是一种很有前途的技术。通过Mott型测量,确定了不同材料的禁带宽度及价带和导带位置。

对于这个文档,您可以得到的全部,没有更多的选项。但是,如果您试图获得一个不同的文档,例如:

代码语言:javascript
复制
# Get document
y = scopus_paper_date('10.1016/j.nicl.2021.102600',my_api_key)
# Parse document
import json
json_acceptable_string = y.text
d = json.loads(json_acceptable_string)

然后,可以打印full-text-retrieval-responsefull-text-retrieval-response键。

代码语言:javascript
复制
# Print document
print(d['full-text-retrieval-response']['originalText'])

您会注意到,这是一个很长的字符串,包含大量文本,可能更多您想要的文本,例如,它也包含所有引用。

正如我在一开始所说,你可以得到的信息取决于单一的文件。但是,完整的数据将始终包含在代码中定义的y变量中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69190605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档