Вопрос или проблема
В настоящее время я разрабатываю программу, которая использует API arXiv для получения списка заголовков и аннотаций статей, поданных в определенный день. Другими словами, это программа, которая автоматически извлекает список статей, доступных по ссылке “новое” на главной странице arXiv.
Однако, даже если я выполняю запрос с использованием API arXiv в соответствии с расписанием arXiv (https://info.arxiv.org/help/availability.html), ни один результат не возвращается. Например, когда я использовал Python для поиска с использованием следующего запроса около 4:30 утра 25 сентября 2024 года (EDT), статьи не были найдены.
import arxiv
client = arxiv.Client()
# Время в запросе указано в 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
# код исправлен около 9:00 вечера 25 сентября 2024 года (EDT)
Согласно расписанию, опубликованному arXiv, если я выполню поиск с использованием этого запроса в это время, я должен был получить результаты для статей, поданных с 2:00 дня понедельника, 23 сентября, до 2:00 дня вторника, 24 сентября. Но этого не произошло.
Почему так? И как я могу получить доступ к последним данным о статьях с помощью API arXiv?
Пожалуйста, скажите мне.
Ответ или решение
Чтобы получить доступ к последним данным, используя API arXiv, необходимо учитывать несколько важных моментов, связанных с расписанием публикаций и использованием API. Давайте разберем вашу ситуацию шаг за шагом.
1. Понимание расписания публикаций arXiv
Согласно расписанию, опубликованному на официальном сайте arXiv, новые статьи обычно выходят в понедельник и четверг в 16:00 по Восточному времени (EDT). Это означает, что на момент вашего запроса (в 4:30 утра 25 сентября 2024 года по EDT) вы можете не получить результаты, если они еще не были опубликованы. Сервер может обновлять свои данные периодически, и поэтому нет гарантии, что вы можете получить статьи сразу после их отправки.
2. Рабочий диапазон дат для вашего запроса
В вашем запросе вы указали диапазон дат:
querydata = "( cat:gr-qc ) AND ( lastUpdatedDate:[202409231800 TO 202409241800] )"
Необходимо убедиться, что этот диапазон соответствует времени публикации. В вашем случае, если статьи были отправлены между 2:00 PM 23 сентября и 2:00 PM 24 сентября, то они должны были стать доступными к 4:00 PM 24 сентября. Однако на момент выполнения вашего запроса в 4:30 AM 25 сентября вы еще могли не увидеть эти статьи.
3. Решение проблемы с использованием API
Чтобы получить свежие статьи, попробуйте использовать следующий подход:
- Убедитесь, что вы выполняете запрос после времени регулярной публикации (16:00 по EDT в понедельник и четверг).
- Также стоит сделать небольшой сдвиг во времени с учетом часовых поясов. API работает с часовым поясом UTC, поэтому вам нужно конвертировать ваш временной диапазон в UTC.
Пример вашего кода с учетом временной коррекции:
import arxiv
from datetime import datetime, timedelta
client = arxiv.Client()
# Определите временной диапазон
today = datetime.utcnow()
start_time = today.replace(hour=18, minute=0, second=0, microsecond=0) - timedelta(days=2) # 18:00 UTC, 2 дня назад
end_time = today.replace(hour=18, minute=0, second=0, microsecond=0) - timedelta(days=1) # 18:00 UTC, 1 день назад
querydata = f"( cat:gr-qc ) AND ( lastUpdatedDate:[{start_time.strftime('%Y%m%d%H%M')} TO {end_time.strftime('%Y%m%d%H%M')}] )"
search = arxiv.Search(query=querydata, sort_by=arxiv.SortCriterion.LastUpdatedDate)
# Получение и вывод результатов
results = client.results(search)
i = 1
for r in results:
print(f"{i}: {r.title}, {r.summary}")
i += 1
4. Рекомендации
- Проверьте расписание публикаций: Убедитесь, что ваш запрос выполняется после времени публикации, указанного на сайте arXiv.
- Подождите некоторое время: Иногда данные обновляются с задержкой. Попробуйте выполнить запрос через несколько часов после времени публикации.
- Используйте правильный диапазон дат: Убедитесь, что ваш запрос охватывает правильный диапазон, учитывая временную зону (UTC).
Следуя этим шагам, вы должны смочь успешно получить доступ к последним данным с помощью API arXiv. Если проблема сохранится, возможно, стоит проверить документацию или обратиться в службу поддержки arXiv для получения дополнительной информации.