Как получить доступ к последним данным с помощью API arXiv?

Вопрос или проблема

В настоящее время я разрабатываю программу, которая использует 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 для получения дополнительной информации.

Оцените материал
Добавить комментарий

Капча загружается...