pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Возможно ли работать под двумя пользователями одновременно в windows 7/10?

Лучший ответ: Windows Server Edition вам в помощь. На обычных редакциях не предусмотрено. Есть, конечно, лайфхаки, которыми можно кустарно переделать - полно рецептов в Интернете. Но это именно нарушение целостности системы и лицензии.

Худший ответ: Можно. 
В серверных версиях идет как штатная опция.
В десктопных включается путем нехитрых манипуляций.
Если лицензионная чистота для вас критична - то только сервер.
Вопрос: Как понять цифры хэмминга на пальцах?

Лучший ответ: Не 2i3j5k, а 2i×3j×5k
Это означает, что при разложении числа на простые множители мы получим только 2, 3 и 5.
1 = 20×30×50
3 = 20×31×50
15 = 20×31×51
30 = 21×31×51
60 = 22×31×51
90 = 21×32×51
и т.д.

Худший ответ: Генерируются они так:

Есть у вас список уже сгенеренных чисел, изначально содержит только 1.

Вы добавляете в список сделющее число, пока не наберете необходимое количество.

Поддерживайте 3 указателя (изначально на первое число), которые указывают на первые неиспользованные числа для домножения на 2, 3 и 5.

Каждый раз берете и сморите что лучше - взять число из первого указателя, домножить на 2, взять число из второго домноженное на 3 или из последнего указателя и домножить на 5. Кладете это число в список и сдвигаете указатель.

Пример:  
шаг 1.  
указатели: 1, 1, 1  
список: {1}  
варианты:1*2, 1*3, 1*5. Лучший - 2.

шаг 2.  
указатели: 2, 1, 1  
список: {1, 2}  
варианты:2*2, 1*3, 1*5. Лучший - 3.

шаг 3.  
указатели: 2, 2, 1  
список: {1, 2, 3}  
варианты:2*2, 2*3, 1*5. Лучший - 4.

шаг 4.  
указатели: 3, 2, 1  
список: {1, 2, 3, 4}  
варианты: 3*2, 2*3, 1*5. Лучший - 5.
Вопрос: Как сократить запись в v-bind?

Лучший ответ: Не надо indexOf, индексы доступны в v-for без каких-либо дополнительных телодвижений:

<div v-for="(row, iRow) in rows" class="board__rows">
  <div
    v-for="(col, iCol) in columns"
    v-text="col + row"
    :class="[ [ 'white', 'black' ][(iRow ^ iCol) & 1], 'board__square' ]"
  ></div>
</div>

Худший ответ: Откройте для себя "computed".
Вопрос: Почему эти значения равны в php?

Лучший ответ: Мануал тебе ответит https://www.php.net/manual/ru/types.comparisons.php

Худший ответ: Когда используете не строгое сравнение строки и целого числа то происходит не явное преобразование типов
Фактически делается (int)'строка' и потом значения сравниваются
И да, в документации про всё это написано

<?php
var_dump( 
    (int) ('         ')
);

var_dump(
    (int) ('_')
);

var_dump(
    (int) ('1 1')
);

int(0)
int(0)
int(1)
Вопрос: Как лучше организовать управление сервером?

Лучший ответ: "несколько запросов одновременно" - на каждое принятое основным потоком соединение делается форк задачи (или запускается поток с подзадачей) с передачей ему соединения. Такое умеют все web-серверы - Apache, Nginx, IIS.
"асинхронность" - это из другой оперы. Под ней обычно подразумевают работу в событийной модели, когда каждое событие запускает связанные с ним обработчики (или кладёт их в очередь исполнения). 
При этом обе эти вещи перпендикулярны друг другу. В том же браузерном JS основной поток страницы один, но работает асинхронно по событиям. При этом у каждой страницы свой основной поток, то есть браузер в целом работает многопоточно.

Худший ответ: Ну и хотелось бы узнать ваше мнение, что лучше.
Всё зависит от задачи, а она нам неясна.
принимать несколько запросов одновременно
одновременно ни один сервер не умеет принимать запросы, т.к. количество процессоров физически ограничено. Есть имитация многопоточности.
Вопрос: Можно ли реализовать чат с сайта в телеграм?

Лучший ответ: Можно

Худший ответ: Регистрируете бота в Телеграме, натравливаете его вебхук на ваш сайт, далее через API Телеграмма шлёте сообщения в чат бота. Это если коротко.
Вопрос: Может ли регистратор для аналоговых камер передавать информацию на сервер напрямую, а не записывать на свой диск?

Лучший ответ: Может. Фактически он так и делает. 
Классический пример: при отсутствии жесткого диска он не перестает работать
Или вопрос касается видеорегистраторов 15-20 летней давности? 
Если триплекс - то может
Справка по древним аналоговым регистраторам:
Симплекс - может выполнять только одну задачу в один момент времени. К примеру, если вы начали просматривать записи в архиве видеорегистратора, запись на жесткий диск остановится. 
Дуплекс - такие DVR позволяют одновременно просматривать архив видео и вести запись. 
Триплекс - вместе с просмотром архива и записью доступна трансляций видео на монитор. 
Пентаплекс - самый распространенный тип видеорегистраторов. на них можно одновременно делать практически все операции: записывать видео на диск, смотреть архив, смотреть видео в реальном времени на мониторе, производить удаленную настройку и т. д.

Худший ответ: может, если отдает потоки с камер. (большинство XM, Dahua, hiwatch регов так умеют)
Вопрос: Как разобрать такую строку {i:0;s:15:"_identity-admin";i:1;s:14:"[3,null,21600]";}?

Лучший ответ: Похоже, что строка неполная. Ваша строка - это сериализованный массив, но спереди ещё должен быть признак массива (a) и его длина (2).
$t = unserialize('a:2:{i:0;s:15:"_identity-admin";i:1;s:14:"[3,null,21600]";}');
var_dump($t);
// array(2) {
//   [0] => string(15) "_identity-admin"
//   [1] => string(14) "[3,null,21600]"
// }
a:2 - массив с длиной 2 элемента
i:0 - целочисленный индекс 0
s:15 - строка длиной 15 символов
Подробнее о формате можно посмотреть в первом комментарии к serialize.

Худший ответ: Похоже на https://www.php.net/manual/en/function.serialize.php
Вопрос: Как отследить факт изменения объекта?

Лучший ответ: «реактивность» можно погуглить, наверное – то, что например, во Vue используется. Они даже публикуют отдельно vue/reactivity.

Или вот ещё, мало звёзд, но:

ddla12/Reactivity
matejsvajger/reactive-object


Худший ответ: Где то так, мне как то пришлось вырезать из скрипта чужой библиотеки функцию, и только это помогло в случае IE
https://developer.mozilla.org/en-US/docs/Web/API/M...
Вопрос: Почему не работает System.Text.Encoding? Ошибается на 1 символ?

Лучший ответ: Ну потому-что ваш генератор тупо генерирует рандомные числа от 0 до FFFF, а в UTF16 там есть определенные правила. Почитайте например в вики

Я не вникал  ну вики говорит что там есть диапазон для суррогатных пар тоесть символы которые кодируются двумя 16битными словами, тоесть 4 байтами. Крч как вариант или тупо добавить проверку в генератор чтобы если рандомное число входит в диапазон исключений D80016..DFFF16 то пропускать и генерировать другое. Или замарачиваться с этими парами, ну это будет сложнее.

Принцип кодированияВ UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от 0 до FFFF16). При этом можно кодировать символы Unicode в диапазонах 000016..D7FF16 и E00016..FFFF16. Исключенный отсюда диапазон D80016..DFFF16 используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя 16-битными словами.

Символы Unicode до FFFF16 включительно (исключая диапазон для суррогатов) записываются как есть 16-битным словом.

Символы же в диапазоне 1000016..10FFFF16 (больше 16 бит) кодируются по следующей схеме:

Из кода символа вычитается 1000016. В результате получится значение от нуля до FFFFF16, которое помещается в разрядную сетку 20 бит.
Старшие 10 бит (число в диапазоне 000016..03FF16) суммируются с D80016, и результат идёт в ведущее (первое) слово, которое входит в диапазон D80016..DBFF16.
Младшие 10 бит (тоже число в диапазоне 000016..03FF16) суммируются с DC0016, и результат идёт в последующее (второе) слово, которое входит в диапазон DC0016..DFFF16.

Худший ответ: Предположу, что ошибка в том, что Random генерирует невалидные последовательности байтов, которые невозможно интерпретировать как какой-то определённый символ.
Вот от этого и возникает несоответствие.
Вопрос: Стоит ли изучать Java в 2021?

Лучший ответ: Java умирает и т.п
Ага. Умирает с самого создания. Можно сказать, что мертворождённая.
Но спрос на программистов от этого почему-то никуда не девается, и даже растёт.

PS: Так и вижу, как какой-нибудь банк с миллионами строк кода на жаве бежит переписывать всё на какой-нибудь новомодный язык. Попутно увольняя или переучивая сотню жавистов.

Худший ответ: Однозначно да!
Вопрос: Почему redux лежит на плечах фронтендера, когда это работа бэкэндера?

Лучший ответ: Когда юзер находится в вашем веб приложении, он создает определенные действия. Действия связаны с состоянием. А redux это набор утилит для глобального хранения состояния(state) в приложении.
Таким образом, вы создаете какие-то объекты и они меняются в зависимости от состояния. Пользователь это видит как некие различные реакции на его действия.

Худший ответ: Redux хранит не данные. Redux хранит состояние приложения, причём именно его фронтовой части. Вот по этому redux и подпадает под ответственность фронтендера
Вопрос: Прошу помочь с загрузкой windows 11?

Лучший ответ: Выключай принудительно комп на моменте начала загрузки. Через пару попыток винда запустит режим восстановления. Через него можно будет откатиться до стабильной точки. 

После этого нахер удаляй клинер. Это бесполезная и зачастую (как вы уже видите) вредная вещь. Туда же всякий софт по типу "ускорялок", "авто обновлений драйверов", "чистилок" и т.д. 

Винда в состоянии сама себя поддерживать в рабочем состоянии.

Худший ответ: что грузит то?? тупо горит виндовс заставка? выключите тогда ноут и включите еще раз
Вопрос: Как заставить работать linux в двух DNS зонах?

Лучший ответ: Нужен резолвер поумнее стандартного. BIND например а в нем что то типа такого:
zone "." IN {
    type forward;
    forward only;
    forwarders {internet;};
};

zone "private-lan.corp" IN {
    type forward;
    forward only;
    forwarders {private;};
};
Похожее есть и в других, к примеру точно есть в adguard home.
Так же есть такая фича в systemd-resolved. Читал но не пробовал лично.

Худший ответ: В частном DNS сервере настраиваете forwarder всех неизвестных доменов на DNS сервер в интернет и используете для резольвинга только частный.
Более того, он по умолчанию по root hints должен это делать.
Вопрос: Можно ли вставить два SSD в ноутбук?

Лучший ответ: Можно. Нюанс - SSD должен поместиться

Худший ответ: Можно, но это бессмысленно, так как разьем подключения дисковода(где стоит сейчас винчестер), тупо не выдаст скорости для ссд, так как скорость этого разьема около 100 мегабайт чтение и запись, то ставить ссд просто бессмысленно, так как сейчас большинство винтов иеют скорость 100 мб в секунду на чтение и запись.

Ставить можно, но бессмысленно.
Вопрос: Как запретить PHP следовать HTTP заголовку Location?

Лучший ответ: да никак. просто не отправляйте его. 
и, для тех кто в танке, локейшену следует клиент, а не слоник.

а просмотр каталога запрещается другими средствами.

Худший ответ: Через curl дёрните и посмотрите, возвращает ли он что-нибудь помимо заголовка или нет.
Вопрос: Как работает этот рекурсивный алгоритм разложения на слагаемые?

Лучший ответ: Алгоритм и вправду написан "чудесно", поди разбери.

Но логика такая.
Берем цифру 5.
Её можно получить как
1 + 1 + 1 + 1 + 1
2 + 1 + 1 + 1
2 + 2 + 1
3 + 1 + 1
3 + 2
4 + 1
(остальные - повторы)

Алгоритм, повышая первую цифру и запуская рекурсию с уменьшением гарантирует, что комбинаций-повторов не будет, т.к. следующая цифра всегда меньше или равна предыдущей, а количество шагов ограничено суммой.

При этом в векторе `vv`, в месте где `ans++` происходит, содержится один набор слагаемых, а `ans` в конце скрипта пишет число возможных комбинаций.

Худший ответ: Функция генерирует все разбиения числа n на слагаемые не больше maxx. Ддя этого ыункуия перебирает, а какое же максимальное число будет в разбиении (цикл по i), берет это число и рекурсивно разбивает оставшуюся часть. Обратите внимание, в качестве maxx в рекурсии передается i. Ведь именно это было максимальное число в перебираемом разбиении. Значит следующее не может его превышать.

Вся эта сложность с максимальным числом сделана, что бы не перебирать перестановки слагаемых. Ведь 4=1+2+1 можно по идее получить тремя способами, меняя порядок. Генерируя слагаемые в не возрастающем прядке, мы избавляемся от таких дубликатов.
Вопрос: Может ли Service иметь репозитории других классов?

Лучший ответ: Могу ли я прямо обратиться к репозиторию Entity A из Service B?
Да, можно. Другой вопрос - хорошо ли.

Или мне надо это делать вот так Service B -> Service A -> Repository A?
Я предпочитаю этот способ.
Причина следующая:
Вот, представьте, что на сервисном уровне вы получаете Optional<T> из репозитория и в случае, если объект не найден, то на сервисном уровне выбрасываете исключение orElseThrow(). Ну а далее ExceptionHandler ловит исключение и отдает соответствующий код ошибки и сообщение на фронт.
Если вы решите из сервиса А обратиться в репозиторий Б, то по факту вам нужно заново получить объект и выбросить исключение в случае, если он не найден, а это уже дублирование кода...
Псевдокод:
ServiceA {
@Autowired
RepoB repoB;
@Autowired
ServiceB serviceB;

// 1 вариант
List<Job> doSomeJob1(String email){
User user =  repoB.findUserByEmail(email).orElseThrow(UserNotFoundException::new);
return user.getJobs();
}

// 2 вариант
List<Job> doSomeJob2(String email) {
User user = serviceB.getUserByEmail(email);
return user.getJobs();
}

RepoB {
Optional<User> findUserByEmail(String email);
}

ServiceB {
@Autowired
RepoB repoB;

User getUserByEmail(String email){
return repoB.findUserByEmail(email).orElseThrow(UserNotFoundException::new);
}

}

Во втором варианте нам не пришлось писать логику и выбрасывать исключение.
А так многое зависит от проекта, от того, как принято в команде работать и т.д.

Проблема в том, что у меня все сервисы DTOшки, а для работы Service B нужны нормальные объекты, что делать в таком случае? Неужели создавать отдельные точно такие же методы просто без конверта в дто? 
Я это обычно, делаю по другому. Я возвращаю объекты из сервисов. А если мне нужно DTO, то есть отдельный сервис MapperService, который принимимает дженерик и возвращает соответствующие DTO.

Худший ответ: Технически вам никто не мешает так делать

Архитектурно - нужно смотреть по конкретному проекту.
Вопрос: Как узнать координаты второго отрезка вектора зная его длинну и начальные координаты?

Лучший ответ: В такой постановке задача не имеет единственного решения.
Любая точка на окружности с центром A и радиусом, равным искомому расстоянию, будет удовлетворять твоему условию.
Тебе нужно либо хранить угол между осью X и вектором AB (полярные координаты), либо хранить отдельно вектор B - A (отдельно x и y).

Худший ответ: Вариант первый
Персонаж (А) стреляет в мышь (Б)
Вектор АБ = Б(x,y)-А(x,y) = [Б(х)-А(х); Б(у)-А(у)]
Тебе надо заранее знать координаты А и вычислять координаты мыши (Б)

Вариант второй
Зная угол и расстояние
Например:
А стреляет на 30°, расстояние 8
Тут подходят решения треугольников.
Например, А(х,у) лежат на 0, тогда: гипотенуза треугольника равна 8, углы 30, а также прямой (90), противолежащий гипотенузе. Узнаем 2 угол автоматически (60) по правилу 180-90-30
И вычисляем координаты точки (8*cos30 и 8*cos60).
Координаты 6,9 и 4. Это будет твой вектор
Вопрос: Почему толстые контроллеры – это плохо?

Лучший ответ: В чем проблема написать в контроллере пару where, join, мб как-то по хитрому обработать данные?Завтра появится задача сделать всё то же самое, но в консоли. Потащищ копипасту или начнёшь выносить общий код в реквесты, репозитории и прочие места?

Тогда просто переносим все в модель? зачем плодить репозитории (кроме как абстрагироваться от конкретной ORM) и остальные сущности?Репозитории актуальны с паттерном DM и не актуальны с паттерном AR.

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

Худший ответ: Если строго следовать принципам SOLID, а именно SRP (принцип единственной ответственности), то задачей контроллера является презентовать какую-то часть приложения в виде HTTP endpoint (в частном случае REST).

Собственно логика не должна находиться в контроллере, потому что способы обращения к этой логике (через HTTP, Service Bus, Telegram, Discord, периодический вызов по крону и т.д.) ортогональны собственно бизнес-логике.

Но это становится действительно критично в сложных проектах. В типичных сайтах, когда не возникает такой задачи вызывать логику из разных мест - этот принцип часто нарушается без существенных последствий.
Вопрос: В чем отличие оператора -> от .(точки)?

Лучший ответ: a->b это более короткая запись для (*a).b

То есть, стрелка сочетает в себе разименовывание указателя и обращение к методу.

Ну и если a - это класс, то оператор стрелка может быть в нем определен по желанию автора класса.

Худший ответ: Стрелка используется с указателями на класс/структуру, а точка со ссылками или с непосредственно экземпляром класса/структуры. Т.е. если вы попытаетесь использовать точку с указателем - получите синтаксическую ошибку.
Вопрос: Как создать сущность с настраиваемыми параметрами?

Лучший ответ: Посмотри модель EAV. Может поможет.

Худший ответ: Создать отдельные таблицы для каждого типа техники
Вопрос: Как передать и получить пакет переданные через широковещательный IP адрес?

Лучший ответ: 1) Вы изобрели Zeroconf / uPnP Возьмите со стеллажа пирожок
2) СЕНСАЦИЯ!!!111, TCP заработало по широковещательному порту (нет).

Прежде чем делать великие открытия в области сетей, изучите теорию, хотя бы Снейдера и Олифера.

После изучения работ атцов, желание лепить велосипеды угасает и заменяется либо грамотным применением наличного функционала, который уже успели настрочить поколения программистов до вас, либо взвешенным и четким своим решением без лютых ляпов вроде TCP по широковещательному порту.

Чтобы что-то передавать широковещательно, вам нужен UDP. Чтобы понимать, куда вы что шлете, очевидно, вам понадобится изобрести какую-то свою методику идентификации машин, например, по именам.

Худший ответ: Для того чтобы программа понимала по каким IP можно передавать файлыА зачем программе это понимать?
Что это за программа такая?
Обычно программы предназначенные для рассылки файлов передают файл в ответ на запрос.
Был запрос с адреса X, значит надо отправить файл на адрес Х.
Что там понимать? Адрес известен.
Вопрос: Как из 2 ccd дисков по 128 сделать один на 256 для использования в качестве диска С компьютера?

Лучший ответ: JBOD либо RAID 0

Худший ответ: Поставить винду на любой диск
Присоединить второй
Сделать оба диска динамическими
Собрать из них raid 0
Вопрос: Что брать из видеокарт?

Лучший ответ: синтетика говорит что gtx750 быстрее gt1030 на 20%-25%

с точки зрения логики, 1030 новее, и есть шансы найти драйвера на 10-ку, а вот r7 260 ... (официально поддержка есть, драйвер можно скачать)

ну и реалии таковы что все указанные видеокарты говно.

Худший ответ: под ваш процессор нужна видеокарта типа печ1060-1070, или хотя бы 1660 супер...
1030 это жо.а, 750 тоже ни о чём (но лучше чем 1030). про радеон не скажу, не люблю их. и да, на 750 есть и обновляются драйвера на 10-ку (пользуюсь такой, с 1гб).
Вопрос: PPTP VPN через Double VPN, как реализовать?

Лучший ответ: 2й вариант наиболее верен.

Скорее всего щас не подключается из-за типа ВПН

Худший ответ: проверь точно ли побанен IP  (после 24го да, RU сети из вна говорят доступ по настроению) и если так, глянь как пробрасывать порты через SSH - подними DO / Scaleway ( ну для RU лучше что-то в Финляндии, вроде есть у Хецнера там адреса) и оттуда VPN

иногда просто тип VPN банится провом, может работодатель даст другой - от Wireguard до Open etc
Вопрос: Смена подсети для PDC, DNS, DHCP. Как правильно это сделать?

Лучший ответ: Дать IP адрес для DC из из новой дополнительно - в параллель старому.
Сделать ipconfig /registerdns и убедиться, что в DNS появилась новая запись в прямой и обратной зоне.
Перенастроить DHCP на выдачу ip адресов из новой подсети, либо (что более правильно) выдачу из новой подсети и как дополнительный ip - еще и из старой.
Дождаться, когда пройдет срок жизни ip адресов в DHCP и убрать остатки от старой 192.168.1.0/24.
Другой вариант - просто поменять срок жизни DHCP на маленький промежуток времени и просто одной операцией заменить старые адреса на новые везде. Тогда будет простой некоторых компьютеров на этот короткий промежуток.

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

Худший ответ: А не проще поднять дополнительный DC в нужной сети, после всех репликаций перетянуть на него все роли, и после всех проверок, старый понизить и вывести. При этом DNS сам среплицирует зону и все настройки.
Вопрос: Как сравнить два списка с помощью хеш-кода?

Лучший ответ: 1. Реализация из Java8:
public int hashCode() {
    int hashCode = 1;
    for (E e : this)
        hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
    return hashCode;
}
Из неё видно, что не совпало — у одинаковых списков хэши одинаковые. Но вспомни комбинаторику: если хэши одинаковы, объекты, СКОРЕЕ ВСЕГО, одинаковые, и один хрен нужно глубокое сравнение. Если разные — точно разные.

2. Если просто сравнить два списка — сравнивай обычным equals, ничего ты не выиграешь от хэшей. Один хрен для вычисления хэша придётся пройти по всем данным. Хэши используй, если нужно сравнить, например, 100 объектов попарно — я так сжимал WAD’ы для Doom без потерь и рассинхронизаций демо-роликов. Сначала находил множества потенциально равных блоков, потом вёл глубокое сравнение.

Худший ответ: Значит, если будет стоять задача сравнить два списка (одинаковы ли они), то достаточно вычислить хеш двух списков?
Нет. Хэши могут быть одинаковыми просто из-за коллизий. Так что если у тебя совпал hashcode - тебе следует ещё и содержимое на равенство проверить.
Если хэшкод не совпал - тогда они точно разные.
в то время как хеш возьмётся быстрее.
Разве для вычисления хэша не нужно точно также пройтись по всем элементам?
Или хэш кэшируется при добавлении новых элементов в список?
Вопрос: Существует ли ЯП с подобным синтаксисом логических операций?

Лучший ответ: В C# есть что-то подобное:
if(status is "complete" or "deleted" or "updated") { /*...*/ }

Худший ответ: ['complete', 'deleted', 'updated'].includes(status)
в котлине это будет status in listOf('complete', 'deleted', 'updated')

if (status === 'complete' || 'deleted' || 'updated') { //... }
а это просто бред какой то, эти операции применяются только к булеану, 'deleted' не булеан. Это все равно что требовать чтобы работало "strring" * "string"
Вопрос: Как фиксануть ошибку l2tp microtik?

Лучший ответ: Проверьте совпадают ли настройки безопастности в профиле микротика для ВПН и у юзера

Так же открытые порты на вход у микротика, включая ipsec

Худший ответ: Смотри в профиле протоколы шифрования у него по умолчанию много чего типа 3des отключено, и в firewall открыть 50 1701 udp порты
Вопрос: Как сделать get запрос по нику?

Лучший ответ: не учите плохому :)
import requests

url = 'https://tanksblitz.ru/ru/api/rating-leaderboards/search/'

payload = {'prefix': 'BrokenSouI'}
r = requests.get(url, params=payload)
print (r.text)

Худший ответ: конкатенацией строк к примеру. Или f строками. Что больше нравиться =)
Вопрос: Как реализовать систему,которая будет брать данные с сайта?

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

Худший ответ: Selenium или инжект javascript кода стимуляции поведения пользователя и сбора информации, с помощью чего то типа greasemonkey

Стимулировать клики мыши и копировать содержимое div-вов не в пример проще, чем реверсинженеритт протоколов передачи данных с бакэндом