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

如何通过arXiv API获取最新论文数据?查询无结果问题解析

问题

我正在开发一款利用arXiv API获取指定日期提交论文的标题与摘要列表的程序,该程序需自动抓取arXiv首页“new”链接中的文章列表。但按照arXiv官方发布的时间安排进行API查询时,却未返回任何结果。例如,我于2024年9月25日凌晨4:30(EDT)使用以下Python代码查询gr-qc分类下2024年9月23日18:00至24日18:00(UTC)更新的论文,未找到任何文章:

import arxiv
client = arxiv.Client()
# The time in the query is in UTC.
querydata = "( cat:gr-qc ) AND ( lastUpdatedDate:[202409231800 TO 202409241800] )"
search = arxiv.Search(query = querydata, sort_by=arxiv.SortCriterion.LastUpdatedDate)
results = client.results(search)
i = 1
for r in results:
    print(str(i)+":"+r.title)
    i = i + 1
# code fixed at around 9:00pm on September 25th 2024(EDT)

根据arXiv的时间安排,此时查询应返回9月23日下午2点至24日下午2点提交的论文,但实际无结果。请问这是什么原因?如何通过arXiv API获取最新论文数据?

原因分析

  • 时间字段匹配偏差:arXiv的lastUpdatedDate字段记录的是论文最后一次被修改的时间,而非初始提交时间。首页“new”板块展示的是首次提交的论文,用这个字段筛选会漏掉仅首次提交、后续未修改的文章,也会包含旧论文的更新版本。
  • 数据同步延迟:arXiv的论文归档与API数据同步存在延迟,官方公布的提交时间到API可查询状态可能有几小时的时间差,你查询的时间窗口可能刚好落在数据未完成同步的阶段。
  • 时间范围精度问题:arXiv API对时间范围的匹配有严格格式要求,若未满足秒级精度或格式规范,可能导致查询无结果。

解决方案

1. 替换为提交时间字段

使用submittedDate替代lastUpdatedDate,该字段对应论文首次提交时间,完全匹配首页“new”板块的内容逻辑。修改后的查询语句:

querydata = "( cat:gr-qc ) AND ( submittedDate:[202409231800 TO 202409241800] )"

2. 调整时间窗口适配延迟

  • 将查询时间窗口向后偏移1-2小时,避开数据同步的空白期;
  • 适当扩大时间范围,比如从202409231700到202409241900,覆盖可能的同步延迟区间。

3. 先验证官网内容再查询

先通过arXiv官网“new”页面手动确认目标时间段内gr-qc分类是否有论文,排除无论文导致的查询空结果。

4. 优化本地筛选逻辑

先通过API获取最新一批论文,再在本地按提交时间范围过滤,避免API查询的时间匹配限制;同时设置sort_by=arxiv.SortCriterion.SubmittedDate,确保结果按提交时间排序,方便后续筛选。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:25:01