В последнее время на хабе стал популярным делать собственные поисковые системы от РуТрекера.
Для меня это показалось отличным поводом отойти от скучной предпринимательской разработки и попробовать что-то новое.
Итак, задача: реализовать поисковую систему на базе The Pirate Bay на локальном хосте и заодно опробовать, что такое фронтенд-разработка и для чего она используется.
Задача усложняется тем, что TPB не публикует свои дампы, в отличие от РуТрекера, и для получения дампов нужно парсить их сайт. Погуглив и поняв проблему, я решил использовать Эластичный поиск , для которого пишите только клиентский интерфейс AngularJS .
Чтобы получить данные, я решил написать в индекс собственный парсер сайта TPB и отдельный загрузчик дампов, оба на Go. Пикантность выбору придавал тот факт, что я никогда раньше не прикасался ни к Elasticsearch, ни к AngularJS, и опробовать их было моей настоящей целью.
Парсер
Беглый просмотр веб-сайта TPB показал, что каждый торрент имеет собственную страницу «/torrent/{id}».Там, где идентификаторы, во-первых, числовые, во-вторых, увеличиваются, в-третьих, вы можете посмотреть последний идентификатор на странице «/recent» и затем попробовать все идентификаторы, меньшие, чем последний.
Практика показала, что id не увеличивается монотонно и не у каждого id есть корректная страница с торрентом, что требовало дополнительной проверки и пропуска id. Поскольку парсер предполагает работу с сетью в несколько потоков, выбор Go был очевиден.
Для анализа HTML я использовал модуль Гокери .
Парсер довольно простой: сначала запрашивается «/recent» и получается из него максимальный id: Получаем последний идентификатор
Теги: #angularjs #elasticsearch #The Pirate Bay #Go #torrent-search #search #torrents #Go #angularfunc getRecentId(topUrl string) int {
-
Копии В Изобилии
19 Oct, 24 -
Рекомендации По Хорошему Поисковому Контенту
19 Oct, 24 -
Как Скопировать Текст Из Pdf В Word
19 Oct, 24 -
Дудл Для Ноутбуков С Акселерометром
19 Oct, 24 -
Интересный Способ Защиты От Ботов
19 Oct, 24 -
Скайп - По Горячим Следам
19 Oct, 24 -
Совет Счастливым Владельцам Жестких Дисков
19 Oct, 24 -
Намек На Iphone 3G
19 Oct, 24