[4b2cfdaacbad2d9dec871128b28f80a98c6e1eb8]

Скачивание arXiv

https://en.wikipedia.org/wiki/ArXiv
https://info.arxiv.org/help/bulk_data/index.html
https://github.com/miku/metha
http://www.git.stargrave.org/?p=arxiv-downloader.git
Как в aef9f9e355834f9c1f30c7c798ffdaadd5bc34bf упоминал, Cloudflare
много чего не даёт смотреть. iacr.org, eprint.iacr.org -- оба отвечают
"Sorry, you have been blocked", даже в JS-capable обозревателей (так что
тут речь не про прохождение CAPTCHA), даже с IPv4 адреса. При этом я
даже никаких RSS/Atom не качаю оттуда, вообще не делаю запросов неделями
из дома к ним.

Многое из мира криптографии бывает на arXiv сайте. Он за Fastly, но пока
даёт достучаться. Может и глупо, может в целом там сплошное фуфло публикуют
(не раз слышал такое мнение, а также о лютой цензуре), но попытаюсь
скопировать/сзеркалировать.

У них есть даже отдельная страница посвящённая этому, где упорно
повторяют про то, что не надо пытаться самостоятельно с них качать все
эти терабайты данных. Но в качестве альтернатив есть только либо S3,
платный, либо решение требующее учётной записи в Google Cloud, к тому же
закрытое (утилиты только бинарные, насколько вижу). Где-либо архивов
сторонних не нашёл.

github.com/miku/metha на Go успешно без проблем скачала несколько
гигабайт XML-ек с метаинформацией о статьях в arXiv, более 3 миллионов.
Качать последнюю версию можно (вроде) без проблем просто по HTTP.
Временами отвечает 406-ым кодом, видимо срабатывают rate limiter-ы. Но в
один поток качать -- вроде Fastly это удовлетворяет. Временно
связанность бывает недоступна, поэтому нужно сохранять состояние
скачивания, чтобы в будущем повторить попытку.

Пока храню всё в одной директории. Размещать всё в виде файлов --
дороговато из-за их количества даже на ZFS. Поднимать СУБД -- ну как-то
как-будто переусложнение. В aria2c это всё не запихнуть -- ему не
хватает памяти для 3M ссылок, плюс это будет означать 6M+ файлов.

Благо, родной net/http и keepalive поддерживает и вообще из коробки
отлично работает. Поэтому написал Go программку. В одном файле
фиксированной 16-байт длины хранятся идентификаторы статей на arXiv,
взятые из XML-ек, полученные обычным grep/sed. В другом файле
двухбайтные HTTP статусы полученные ("инициализация" этой БД:
truncate -s $(( $num * 2 )) codes). В третьем файле фиксированной длины
64-байт записи с именем файла, узнанном через HTTP. Вот и вся БД.
Моментально узнать состояние той или иной статьи: банальный seek.
Продолжить докачивание: тоже seek. Сами файлы на ФС в одной директории
пока.

Пока удалось без проблем скачать 0.5M исходников статей, 1/6 часть.
Наверное это должно быть достаточно и результирующие PDF излишни, к тому
же для них придётся искать место на дисках, к тому же и нет понимания
нужно ли в целом всё это будет. Пока скачанные исходники занимают около
сотни гигабайт, что наверное можно на десятки процентов сократить
пересжатием из gzip-ов в которых всё отдаётся.

    [оставить комментарий]