如何使用Elsevier Article Retrieval API获取论文全文
解决Elsevier Article Retrieval API获取论文全文不全问题
问题根因
- 你声明的
view=FULL参数未实际拼接到请求URL中,API默认仅返回基础元数据,不会返回完整全文内容 - 原代码中query参数前缀使用了
&,该符号仅用于拼接多参数,第一个参数前缀需要用? - 未做请求状态校验,无法判断是权限问题、参数问题还是网络问题导致返回内容不全
修正后的代码
import httpx def scopus_paper_fulltext(paper_doi, apikey): headers = { "X-ELS-APIKey": apikey, "Accept": "text/xml" } timeout = httpx.Timeout(10.0, connect=60.0) client = httpx.Client(timeout=timeout, headers=headers) # 正确拼接view参数到URL url = f"https://api.elsevier.com/content/article/doi/{paper_doi}?view=FULL" r = client.get(url) # 先校验请求状态 if r.status_code != 200: print(f"请求失败,状态码:{r.status_code},错误信息:{r.text}") return None return r.text # 调用示例(myapikey替换为你自己的API密钥) y = scopus_paper_fulltext('10.1016/j.solmat.2021.111326', myapikey) print(y)
其他常见问题排查
- 如果返回状态码为403:说明你的APIKey没有该论文的全文访问权限,需确认你所在机构是否订阅了对应期刊的API全文权限
- 如果需要获取PDF格式全文:将
Accept头修改为application/pdf,之后将响应的r.content写入本地.pdf文件即可 - 如果返回状态码为429:说明请求频率超出API限制,降低请求频率即可,一般建议单密钥请求频率不超过3次/秒
内容的提问来源于stack exchange,提问作者Fighting
相关产品推荐
相关产品推荐

