Alexey
🖥 Golang Web Scraping Awesome-Web-Scraping – Список инструментов, библиотек программирования и веб-сервисов, используемых при парсинге и обработке данных. 🖥 Github @Golang_google
А есть вообще какие-нибудь нормальные книги по современному парсингу? Достать блок из сайта с 2010ых все горазды, а когда там везде жс, или работает через раз, потому что в гугле все сводится к новичковым примерам и переложить это на реальную задачу довольно сложно
Andrei
А есть вообще какие-нибудь нормальные книги по современному парсингу? Достать блок из сайта с 2010ых все горазды, а когда там везде жс, или работает через раз, потому что в гугле все сводится к новичковым примерам и переложить это на реальную задачу довольно сложно
не думаю,что парсинг бывает современный, и справляющийся со всей динамичностью фронтенд фремфорков. Первая работа была на парсинге и это всегда боль, если не парсишь сам у себя. Меняется какой-то див и все лежит. Хотя тулы скорее всего есть хорошие, но книги и что-то вроде "современный парсинг" -я не думаю)
Andrei
скорее всего как год назад так и сейчас берешь Селениум и в путь
Alexey
не думаю,что парсинг бывает современный, и справляющийся со всей динамичностью фронтенд фремфорков. Первая работа была на парсинге и это всегда боль, если не парсишь сам у себя. Меняется какой-то див и все лежит. Хотя тулы скорее всего есть хорошие, но книги и что-то вроде "современный парсинг" -я не думаю)
++++++ еще когда классы в этих дивах динамически меняются время от времени, просто селениум - путь страданий, вообще парсить - путь страданий, но я вот такое заметил, что везде хеллоу ворлд а как доходит до дела так ничего толкового
Andrei
ну у тестровщиков есть хорошие тулы, но они просто позволяют страдать чуть более удобно
Alexey
такое можно парсить через апишку, если контент на сайте меряется динамически, значит он приходит откуда-то)
апи закрыто и наверняка довольно защищенно, или я просто не знаю как их вытягивать
Alexey
если оно работает в браузере, то оно уже не защищено)
как минимум запросы могут быть разрешены лишь для определенного хоста, и даже если вытянуть эти запросы они просто не будут работать
MDWIT
как минимум запросы могут быть разрешены лишь для определенного хоста, и даже если вытянуть эти запросы они просто не будут работать
это все не работае при отправки запросов с бекенда cors на работает в принципе, а проверки заголовков и можешь обмануть отправив свои заголовки
MDWIT
Правда? Почему?
потому что общение клиента с бекендом не может быть защищено так, чтобы кто-то не мог получить доступ к api. так как из браузера ты можешь получить любые секретные и скрытые данные. Браузер выполняет весь код у тебя на устройстве. Даже шифрование данных не помогает, потому что ты всегда можешь отловить состояние до шифрования, а так же можешь тупо скопировать алгоритм шифрования и повторить его самостоятельно единственная защита ssr, который сейчас выходит из моды и используется в основном для seo, иногда конечно для безопасности но любые динамические данные не могут выполняться в ssr, так как он умеет только в рендеринг на сервере, а это требует перезагрузки
Maks
Это все реализуется без проблем
Maks
А так да, сервер особенно апишный у тебя или имеет внешнее общение или нет. Ну можно еще ключем защититься но это такое.
MDWIT
Можно подгружать динамические данные в виде html с сервера и встраивать их в страницу, например туда где есть пагинация
ну так это же все равно api, делать к которому запросы почти всегда намного проще раз ве что код от китайского умельца может подарить пару бессонных ночей
Maks
Без перезагрузки страницы
MDWIT
Это динамический сср)
ну хорошо, он все равно реализует апи, только на уровне сервера клиента
Maks
Чем сложнее защита тем больше в ней уязвимостей)
Alexey
Прежде чем о чем то таком думать нужно точно понять что тебе нужно от и до и зачем
хотел тестовое сделать, как -то скидывали выше мол на парсинг цены, однако доска с которой я хотел парсить оч капризная, ну и засел с парсингом
Maks
Там сср или ты не разобрался и там есть рест?
no_name
dawayte wmeste poprobuyem napisat sayt na golange
no_name
))
Maks
Я его начал делать это тестовое в рамках монолита для начала, у меня получилось интерфейс парсера цены, 3 или 4 сущности и примитивный круд.
Maks
Там на самом деле работы мало прям ваще
Maks
Ну и ниче мне стало некогда а потом я забил.
Maks
Там архитектурно реально оч просто.
( ͡❛ ෴ ͡❛)
Может скинешь весь код в плейграунд?
Вот здесь такая же проблема или похожая. Если апендить слайс и давать в рекурсию все запрывается, если в вызове рекурсии делать апенд все работает как часы: https://go.dev/play/p/r7Vv_kiJQUG
( ͡❛ ෴ ͡❛)
закомментировал в итоге апенд в теле рекурсии
kostyaBro
закомментировал в итоге апенд в теле рекурсии
кроме того что чтоит скидывать код в плейграунд, стоит делать так чтобы его можно было запустить.
( ͡❛ ෴ ͡❛)
а для чего вот это порно res *[]string?
чтоб рекурсии меняли отдаваемый слайс по адресу
( ͡❛ ෴ ͡❛)
он тут не при чем
( ͡❛ ෴ ͡❛)
я на литкоде вижу довольно часто эту тему, товарищи сказали что тоже в курсе что надо мейкать новые слайсы но не шарят почему так происходит
kostyaBro
мутируешь существующий
kostyaBro
вот почему
kostyaBro
можешь дебагером нырнуть и увидишь что происходит
( ͡❛ ෴ ͡❛)
так я и хотел к существующему добавить скобку например
( ͡❛ ෴ ͡❛)
и потом его копию закинуть в рекурсию
( ͡❛ ෴ ͡❛)
ощущение что какой-то датарейс хотя это вобще последовательная програмка
kostyaBro
ну := считай копию делает
( ͡❛ ෴ ͡❛)
оки
( ͡❛ ෴ ͡❛)
а здесь?
( ͡❛ ෴ ͡❛)
там вобще ничего со слайсом не происходило, просто его хотел добавить в результирующий
Andrey
ну или нарисуй на бумажке все что происходит, и так тоже сразу поймешь, понимаешь ли ты что происходит)
Sanity = nil
Как нарисовать на бумажке то?
kostyaBro
там вобще ничего со слайсом не происходило, просто его хотел добавить в результирующий
мутируется один и тот же слайс можешь чистить его перед ретерн
kostyaBro
но в этом случае лучше дебагер
kostyaBro
а здесь?
а здесь я просил скинуть весь код, на сколько я помню там опять было в рекурсии все
Andrey
Как нарисовать на бумажке то?
ну сходил в туалет, покакал и потом пальцем рисует. как говорится, натур-продукт)
Andrey
MVP design
вчерашняя тема тебя так и не отпустила за ночь?)
Maxim
Всем Привет, как можно сделать так, чтобы работали валидаторы по типу gte, lte на кастомные типы: type Date struct { time.Time } type DateRange struct { Min Date json:"min" validate:"required" Max Date json:"max" validate:"required,gtefield=Min" }
Eugene
Ребзя, всем привет Подскажите пожалуйста - а как работать в го с логерами? Допустим в той же пыхе я могу в инстанс объекта прокинуть сконфигурированный логгер и пользовать где хочу в рамках этого инстанса В Го мне не понятно как это сделать Пакет log Нужно сконфижить лог чтобы он писал в отдельный файл И дальше чтобы его можно было в влюбой функции дернуть https://go.dev/play/p/WkNByaPP1en Спасибо за ответ
Null
bit – Экспериментальная имплементация надстройки на git cli на Go Данный инструмент предоставляет следующие улучшения: • автокомплит команд; • автокомплит имен файлов; • автоматический фетч и механизм, снижающий вероятность конфликтов; • и др. #Go #Git #CLI #Interesting 🖥 GitHub @Golang_google
а да
Всем привет, подскажите кто с гугл апи каким-либо работал. Я чет не догоняю, мне на каждого нового авторизованого пользователя создавать новый клиент через токен для работы с апи? Или как это вообще работает?
а да
Они тут даже в примерах своих все на каждого отдельного пользователя создают. Нет ли способа попроще или какой-то штуки типа админ панели чтоб сразу со всеми юзерами работать можно было?
а да
у меня по факту задача на каждый создающийся ивент в своем сервисе создавать ивент в гугл календаре всем задействованным юзерам. Вот я и пытаюсь чет придумать.
Илья
Думаю, что в это примере сделали для удобства
а да
Хм, странно. По факту апишку можно где хочешь вызывать, просто токен юзера нужно добавлять
а если мне надо сразу большой группе юзеров заинсертить всем по ивенту?
а да
то что делать