reactor-crw v0.1.0 / парсер :: reactor-crw

reactor-crw парсер 

reactor-crw v0.1.0

Добрейший вечерочек. Новая версия reactor-crw и в ней уже используется graphql API реактора. Тот самый, на который, с недавних пор, переехала мобильная версия сайта. Ссылка на API.

Выглядит это следующим образом:

reactor-crw,парсер

На данный момент reactor-crw поддерживает два парсера, HTML и API. Оба доступны в виде подкоманд:
- ./reactor-crw html -p "http://joyreactor.cc/tag/Photo+art" -HTML версия
- ./reactor-crw api -t "Photo Art"  - API версия

Ограничения

Внимательный читатель заметил, что этап получения ссылок происходит дольше самого скачивания файлов. Хотя по идее мы ничего не парсим а сразу получаем нужный результат. Так происходит потому что у реактора довольно жесткие лимиты по запросам на API. Собственно, у меня получилось заблочить себя даже в плейграунде.

Таким образом, каждый новый запрос на API происходит с таймаутом в 2 секунды.

Что позволяет API парсер

На данный момент, только пакетное выкачивание тегов. По умолчания API отдает абсолютно все, что связано с тегом, поэтому, была добавлена поддержка заблокированных тегов и подписок пользователя. 

./reactor-crw api -t "Photo Art" -с "строка с куками"

Это уберет из результата все что у вас заблокировано. Но так же отфильтрует контент, на который нужно явно подписаться, что бы видеть. Куки нужно брать мобильной версии сайта.

Список всех флагов и их описание на странице github.

Изменения в версии 0.0.2

- Была добавлена поддержка socks5 и прокси (работает для HTML и API). Пример:
./reactor-crw api -t "tag name" --socks5 "socks5://127.0.0.1:9050"

- Значительно повысилась скорость обработки файлов. Теги, которые качались по 10-12 минут, сейчас тащатся за 2-3.

Скачать последнюю версию здесь. Если обнаружили ошибку или есть идея для нового функционала - создайте issue.

p.s. да, мы все знаем про Kelly.


Подробнее

reactor-crw,парсер
Развернуть
прикольная штука, только у меня так и не получилось настроить сохранение куда надо, указав путь
Ошибка или просто игнорирует флаг -d и сохраняет в дефолтную директорию?
хз) сейчас с новой версией попробовал ещё раз и получилось, спасибо.
я всё равно дождусь виндовую окошковую версию...
Уже
Под эту версию ещё не вышел. Для прошлых версий есть, но репозиторий сейчас скрыт.
Не могу запустить его в Mac OS X, подскажите, как правильно это сделать.
1) chmod +x reactor-crw_0.1.0_macOS_64bit
2) запускаем ./reactor-crw_0.1.0_macOS_64bit --help
3) получаем сообщение что эту неизвестно кем сделанную срань мы запускать не будем
4) открываем настройки безопасности и все же разрешаем выполнение этого бинарника
Mac osx 10.8.5
Безопасность из любого источника.
Делаю, как вы написали. И вот что на выходе.
balthasar:~ boojin$ cd /reactor-crw_v0_1_0

balthasar:reactor-crw_v0_1_0 boojin$ chmod +x reactor-crw_0.1.0_macOS_64bit

balthasar:reactor-crw_v0_1_0 boojin$ sudo chmod +x reactor-crw_0.1.0_macOS_64bit

Password:

balthasar:reactor-crw_v0_1_0 boojin$ ./reactor-crw_0.1.0_macOS_64bit --help

dyld: Symbol not found: _clock_gettime

Referenced from: /reactor-crw_v0_1_0/./reactor-crw_0.1.0_macOS_64bit

Expected in: flat namespace


Trace/BPT trap: 5

balthasar:reactor-crw_v0_1_0 boojin$
Понял. Это мистер xcode sdk выебывается. Краулер тут ни при чем. Запустите в терминале
xcode-select --install

Сурс:
https://stackoverflow.com/questions/39544703/getting-error-dyld-symbol-not-found-clock-gettime
https://github.com/Azure/azure-functions-core-tools/issues/571
Делаю так в Mac osx, через терминал:
cd /reactor-crw
sudo reactor-crw api - t "Photo Art" - d "." - w 2
И получаю command not found, пробовал и без sudo.
Что я делаю не так?
Там нужен относительный путь:
sudo ./reactor-crw api - t "Photo Art" - d "." - w 2
Спасибо за ответ.
Но все равно получаю "command not found".
Правильно ли я понимаю, что ты получаешь id постов по api, а потом парсишь html?
Нет. Все полностью через api. Просто чуть больше манипуляций с данными.
Так а как ты прямую ссылку на изображение получаешь? В api вроде нет такого функционала, только узнать id картинки можно.
https://github.com/reactor-joy/reactor-crw/blob/0a6c5d89f1a9b2a33ff1c66105f414591bb3e051/crawler/api/crawler.go#L127
Вот основная функция для формирования линки. Зависит от тегов, хоста, размера изображения, и nsfw ли это.
Кстати, посоветуйте что бы такого почитать начального уровня по созданию лексеров - парсеров?
Что бы так сказать вкатится в тему. Д. Ульмана же, читать мне умственные способности не позволяют.
Это, а что, возможность скачивать единичную страницу исчезла?
К слову, попытка скачать одну страницу версией 0.0.3 тоже провалилась.
reactor-crw.exe -o http://joyreactor.cc/post/5065034 -d D:\Download\Joyreactor
Так пишет: required flag(s) "path" not set
reactor-crw.exe -o -p http://joyreactor.cc/post/5065034 -d D:\Download\Joyreactor
А так: No links were found

Чего ему ещё надо, я так и не понял. Взял строку-пример из ридми с гитхаба:
reactor-crw.exe html -p "http://joyreactor.cc/post/5065034" -d "D:\Download\Joyreactor"
Синтаксическая ошибка в имени файла, имени папки или метке тома на обоих опробованных версиях — 0.0.3 и 0.2.0

К слову сказать, с гуем тоже непонятки. Что там такое есть атрибуты и почему по паре текстовых полей? Что им писать? В одно -p, в другое ссылку? -d и директорию? А как быть с html или api? -o? В общем, как-то не получается у меня составить команду для одной страницы, при том что два тега на пробу я легко скачал безо всяких проблем.
Так, опытным путём выяснил, что если хотеть скачать одну страницу, надо указать
html -o -p "ссылка"
Это необходимый минимум. Как-то чуть-чуть неочевидно из описания, не говоря уже о том, что в примере в ридми на гитхабе не хватает -o
Плюс мой косяк, я с самого начала пытался скачать nsfw-страницу (просто не хотелось 29 фоток вручную сохранять). До этого вполне успешно скачал nsfw-тег, вот и лопухнулся.
Если -c "кука" поставить после -d "папка", то пишет, что cannot process provided destination. Причём, невзирая на кавычки.
Фух! Алилуйя!
reactor-crw.exe html -c "кука" -o -p "http://joyreactor.cc/post/5065034" -d "D:\Download\Joyreactor"
Рад, что разрулилось. Проверил на версии 0.2.0:
# .\reactor-crw_0.2.0_Windows_64bit.exe html -p "http://joyreactor.cc/post/5065034" -d "C:\Users\avpretty\Downloads" -c "куки" -w 2 - все ок. Куки после -d и даже флаг не -o не указывал.

Поправлю описание флага -o в хелпе и добавлю пример. Спасибо.
Оказалось, проблема не в том, что куки после -d, а в том, что D:\Download\Joyreactor\ и "D:\Download\Joyreactor" работают, а "D:\Download\Joyreactor\" не работает.
-o действительно оказался необязательным параметром, хотя я так не очень разобрал границы применимости, в каких случаях без него не обойтись, а в каких он не нужен. И зачем в таком случае вообще нужен.
html -o -c -p -d работает
html -c -p -d работает
без параметра html или с api не работает (речь об одной странице)
Как-то так.

Вопрос: почему всё описание на английском и максимально формально, если заточено для русскоязычного сайта?
Вопрос: почему страницу нельзя скачать через api? Я встречал страницы, которые можно посмотреть только через апи, и там десятки фотографий. Ну, в смысле, в браузере, даже будучи залогиненным, их не посмотреть. Насколько понимаю, этой программой их скачать невозможно. Разве что скачивать весь тег.
Проверил, да, заблоченные посты как единичную страницу скачать нельзя.
"почему всё описание на английском и максимально формально, если заточено для русскоязычного сайта?"
Такой уж стандарт. Как видишь, все ровно стараюсь отвечать и здесь. Если нашел баг или есть предложения, то issue можно и на русском писать.

"почему страницу нельзя скачать через api?"
Еще не сделал. Пока что только тег.

"И зачем в таком случае вообще нужен.html -o -c -p -d работает html -c -p -d работает"
-o нужно обязательно указать есть нужно скачать одну страницу и при этом на этой странице есть пагинация. В посте, как ты понимаешь, никакой пагинации нет. Потому и не обязательно.

Что бы лучше понимать что можно через html команду, а что через api, перечитай хелпы по обем командам:
./reactor-crw.exe html --help
./reactor-crw.exe api --help

что-то общее, что-то нет.

Если есть вопросы - пиши, стараюсь отвечать всем.
-o нужно обязательно указать есть нужно скачать одну страницу и при этом на этой странице есть пагинация. В посте, как ты понимаешь, никакой пагинации нет. Потому и не обязательно.

А, дошло.
привет. а где брать куки?
В мобильной версии сайта. Нужное значение кук можно увидеть например в консоли браузера (f12 для включения). Загрузите страницу с включенной консолью и во вкладке сеть одним из запросов будет joyreactor.cc. Кликнув по этому полю, будут показаны параметры запроса/ответа. Вкладка "заголовки", "заголовки запроса".
UU UUMIUo 15 000 грн. Тип автомобиля: С пробегом Условия продажи: Простая продажа Растаможена: Да Модель: 9 Я ВАТНИК Г л •• л« •«» «MJ«* 1007 770 000 : » /WQRLEJV s» IN PHOTO WORLD IN PHOTO развернуть j CŸ? О Инспектор □ Консоль О Отладчик Сеть {} Стили О Профайлер О Память §
привет. а почему может не качать некоторые тэги? например katsushika pachi или Jay-Marvel. пишет что не найдено ничего
то есть 2022/04/12 18:41:37 failed on fetching links: cannot retrieve tag posts: input:1
0: blog.postPager.posts Internal server error
На гитхабе потерли парсер?
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
(§) reactor_crwUI □ X Путь к r-crw Сохранить конфиг Папка загрузки Загрузить конфиг Адрес страницы Строка Cookies Q Тип контента: Q Изображение Q gif D webm Q mp4 Загружать только одну страницу Q Приоритет загрузки: 1
подробнее»

reactor-crw парсер gui

(§) reactor_crwUI □ X Путь к r-crw Сохранить конфиг Папка загрузки Загрузить конфиг Адрес страницы Строка Cookies Q Тип контента: Q Изображение Q gif D webm Q mp4 Загружать только одну страницу Q Приоритет загрузки: 1
Привет!ш reactor_crwUI □ X Путь к r-crw Папка загрузки Адрес страницы Запуск Строка Cookies Q Тип контента: Q Изображение Q gif D webm Q mp4 Загружать только одну страницу Q Приоритет загрузки: 1
подробнее»

reactor-crw парсер gui

ш reactor_crwUI □ X Путь к r-crw Папка загрузки Адрес страницы Запуск Строка Cookies Q Тип контента: Q Изображение Q gif D webm Q mp4 Загружать только одну страницу Q Приоритет загрузки: 1