如何通过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
相关产品推荐
相关产品推荐

