如何使用 Elsevier Article Retrieval API 获取论文全文
How to Use Elsevier Article Retrieval API to get fulltext of paper
我想使用 Elsevier Article Retrieval API (https://dev.elsevier.com/documentation/FullTextRetrievalAPI.wadl) 获取论文全文。
我使用 httpx 获取论文的信息,但它只包含一些 information.My 代码如下:
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
结果如下:
<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>....
如何获取论文的完整数据,非常感谢!
这取决于您要下载的论文。
我对您发布的功能进行了一些修改。现在它得到的响应是 JSON 而不是 XML (这只是我个人的喜好,您可以使用您喜欢的格式)。
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
现在你可以检索你想要的文档,你将不得不解析它:
# 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
,即摘要:
The production of molecular hydrogen by photoelectrochemical
dissociation (PEC) of water is a promising technique, which allows ... The width of the forbidden
bands and the position of the valence and conduction bands of the
different materials were determined by Mott - Schottky type
measurements.
本文档仅此而已,没有更多选择。
但是,如果您尝试获取不同的文档,例如:
# 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-response
的 originalText
键
# Print document
print(d['full-text-retrieval-response']['originalText'])
您会注意到这是一个很长的字符串,包含很多文本,可能比您想要的更多,例如,它还包含所有引用。
一开始就说了,能得到的信息要看单篇论文。但是,完整数据将始终包含在代码中定义的 y
变量中。
我想使用 Elsevier Article Retrieval API (https://dev.elsevier.com/documentation/FullTextRetrievalAPI.wadl) 获取论文全文。
我使用 httpx 获取论文的信息,但它只包含一些 information.My 代码如下:
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
结果如下:
<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>....
如何获取论文的完整数据,非常感谢!
这取决于您要下载的论文。
我对您发布的功能进行了一些修改。现在它得到的响应是 JSON 而不是 XML (这只是我个人的喜好,您可以使用您喜欢的格式)。
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
现在你可以检索你想要的文档,你将不得不解析它:
# 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
,即摘要:
The production of molecular hydrogen by photoelectrochemical dissociation (PEC) of water is a promising technique, which allows ... The width of the forbidden bands and the position of the valence and conduction bands of the different materials were determined by Mott - Schottky type measurements.
本文档仅此而已,没有更多选择。 但是,如果您尝试获取不同的文档,例如:
# 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-response
originalText
键
# Print document
print(d['full-text-retrieval-response']['originalText'])
您会注意到这是一个很长的字符串,包含很多文本,可能比您想要的更多,例如,它还包含所有引用。
一开始就说了,能得到的信息要看单篇论文。但是,完整数据将始终包含在代码中定义的 y
变量中。