You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用API批量下载Scopus/ScienceDirect论文PDF异常求助

问题根因
  • 代码存在基础语法错误:headers字典中'view' = 'FULL'写法错误,Python字典键值对需要用冒号分隔,正确写法为'view': 'FULL',该错误会直接导致接口参数不生效。
  • 404错误核心原因:Elsevier文章检索接口仅覆盖Elsevier自有版权的出版物,你测试用的10.1038开头的DOI属于Nature出版集团,不属于Elsevier收录范围,必然返回404,和API密钥、权限无关。另外你测试用的EID为截断的无效值,合法Scopus EID为2-s2.0-加11位数字的固定格式,长度不符合的EID请求自然返回404。
  • 仅能下载第一页是接口的版权限制:非开放获取论文即便携带机构Token,普通接口也只会返回免费预览的第一页内容,并非代码逻辑问题。
解决方案
  • 先做DOI范围过滤:仅保留10.1016前缀的Elsevier旗下期刊/图书DOI,其他出版社的DOI不要用该接口请求,必然报错。
  • 替换为开通了文本挖掘(TDM)权限的机构Token:普通机构访问Token没有完整PDF的API拉取权限,需要机构管理员在Elsevier开发者后台为你的API Key开通TDM服务权限,才能拉取机构订阅范围内的非OA论文完整PDF。
  • EID请求前先通过Scopus检索接口校验EID有效性,不要使用截断的短EID。
  • 遵守Elsevier接口调用规则,请求频率不要超过每秒3次,避免被临时封禁。

注意:如果返回内容长度很短、或者文件开头不是%PDF-标识,说明拿到的只是预览页,没有完整内容权限,不要尝试绕过限制爬取,违反平台使用条款会直接封禁API Key。

修正后的可运行代码
import requests

# 请替换为自己的有效API Key和开通TDM权限的机构Token
headers = {
    'X-ELS-APIKEY': "替换为你的APIKEY",
    'Accept': 'application/pdf',
    'X-ELS-Insttoken': "替换为你的机构TDM Token",
    'view': 'FULL'
}

_url_base = 'https://api.elsevier.com/content/article/'

# 仅支持Elsevier自有版权DOI,非10.1016前缀的其他出版社DOI会返回404
doi_list = [
    '10.1016/S1525-1578(10)60571-5',
    '10.1016/0038-1098(87)90044-5'
]

for doi in doi_list:
    # 简单过滤非Elsevier DOI
    if not doi.startswith('10.1016/') and not doi.startswith('10.1016/j.'):
        print(f"DOI {doi} 不属于Elsevier出版,跳过")
        continue
    url = _url_base + 'doi/' + doi
    print(f"正在请求: {url}")
    res = requests.get(url, headers=headers)
    print(f"响应状态码: {res.status_code}")
    if res.status_code == 200:
        # 校验返回内容是否为完整PDF(PDF文件开头固定为%PDF-标识)
        if res.content[:5] == b'%PDF-':
            # 替换DOI中的斜杠避免文件名非法
            filename = f"{doi.replace('/', '_')}.pdf"
            with open(filename, 'wb') as f:
                f.write(res.content)
            print(f"DOI {doi} 下载完成,保存为{filename}")
        else:
            print(f"DOI {doi} 仅返回预览页,当前账号无完整PDF下载权限")
    else:
        print(f"DOI {doi} 请求失败,错误信息: {res.text[:200]}")
补充说明

如果需要批量获取多出版社的开放获取论文,可以先通过OA聚合接口查找可合法下载的OA版本;非OA内容请通过机构订阅的官方渠道获取,不要通过接口强行爬取。

内容的提问来源于stack exchange,提问作者nphaibk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:39:22