Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1] 

> Описание: Нужно вычленить цену и количество предмета на аукционе
Kostick
Отправлено: 22 Апреля, 2024 - 00:37:08
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




Есть сайт bdocodex.com и есть таблица в Google Sheets. С помощью команды "=IMPORTXML" хочу вывести цену предмета, который необходим, в ячейку. Нашел, что если в ячейке A1 ввести, например "https://bdocodex.com/ru/item/11834/#3", в ячейке А2 "//td", а в ячейке А3 "=IMPORTXML(А1;А2)", то выведится информация о предмете. В ячейке AB5 будет текст
CODE:
var
real_item_prices={"prices":{"RU":[["28900000","125"],["68000000","12"],["306000000","29"],["975000000","8"],["4630000000","3"],["27500000000","2"]]},"token":"a2a84f37a5bde586eb33aef9740d1b5d"};

В нем в квадратных скобках есть информация в виде "цена; количество предмета на аукционе". В каждых скобках цена в зависимости от уровня заточки от +0 до +5, т.е. 5 таких групп.
Так же есть индивидуальный токен для каждого предмета и ссылка на цену под названием "id=real_price".
Мне нужно создать таблицу, в которой я бы мог ввести в ячейку А1 - название предмета, в В1 - уровень заточки, а мне выдало бы в ячейке А2 - цену этого предмета, в ячейке А3 - количество предмета на аукционе.
Но я не могу придумать, как это реализовать. Прошу вашей помощи.
Также есть пост на форуме сайта с вопросом про парсинг цен на аукционе:
https://bdocodex.com/forum/viewtopic.php?f=7&t=340

(Отредактировано автором: 22 Апреля, 2024 - 00:43:57)

 
 Top
Zireael
Отправлено: 22 Апреля, 2024 - 02:19:53
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




Было бы проще если знать ID всех предметов. Обычно в файлах игры есть файл, в котором есть эти данные.
Толку от названия предмета мало. Даже если через селениум использовать поиск на сайте, то введя Серьги Карнака, получим несколько ссылок на предметы с таким названием, но разным ID.
 
 Top
Kostick
Отправлено: 22 Апреля, 2024 - 03:08:51
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




Да, есть ID всех предметов, который совпадает с ID на сайте
Вот таблица:(для просмотра ссылки Вам необходимо авторизоваться) Чтобы изменить регион и язык на "Ru", зайдите в "Файл" и создайте копию.
Вот пример таблицы, где я попытался получить данные:(для просмотра ссылки Вам необходимо авторизоваться) (Добавление)
Но это пример только для одного предмета. А нужно, чтобы можно было найти информацию для нескольких предметов на одном листе
(Добавление)
Т.е. по сути нужно упаковать все формулы в одну и записать в одной ячейке, если я правильно понимаю
(Добавление)
Немного изменил поиск данных с сайта:
Вместо "//td" ищу через "//td//script". Получаю:
CODE:
var
real_item_prices={"prices":{"RU":[["28900000","125"],["68000000","12"],["306000000","29"],["975000000","8"],["4630000000","3"],["27500000000","2"]]},"token":"a2a84f37a5bde586eb33aef9740d1b5d"};

Теперь нужно найти данные между "{"RU":[" и "]}", при этом в зависимости от уровня заточки, для +0 это будут данные между первыми двумя скобками:
["28900000","125"]
Для +1 между вторыми:
["68000000","12"]
Но я не могу придумать регулярное выражения, чтобы вычленять данные именно из определенных скобок.

(Отредактировано автором: 22 Апреля, 2024 - 03:14:49)

 
 Top
Kostick
Отправлено: 22 Апреля, 2024 - 11:52:14
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




Ответ разработчика сайта, как он получил информацию с аукциона:
 Цитата:
Это очень просто на самом деле:
1. Зайдите на оф. сайт игры в раздел "Центральный аукцион".
2. Откройте в браузере инструменты разработчика и переведите его в режим мобильного устройства.
3. Перегрузите страницу и аукцион заработает.
4. Далее просто откройте в инструментах разработчика вкладку Network и смотрите, какие запросы игра посылает при просмотре данных по предметам, и что сервер выдаёт в ответ.

Таким образом вы увидите все команды для получения цен с аукциона и сможете использовать их в своих целях.

Есть web-интерфейс аукциона
(для просмотра ссылки Вам необходимо авторизоваться) Чтобы его использовать, нужно зарегистрироваться на сайте www.ru.playblackdesert.com, и активировать двухфакторную аутентификацию, чтобы можно было его использовать.
Буду пробовать парсить его.
 
 Top
Zireael
Отправлено: 22 Апреля, 2024 - 12:25:42
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4398
Дата рег-ции: Нояб. 2017  
Репутация: 580




Обязательно через таблицы делать?
Можно через PowerShell.
 
 Top
Kostick
Отправлено: 22 Апреля, 2024 - 17:42:41
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




 Zireael пишет:
Обязательно через таблицы делать?
Можно через PowerShell.

Я никогда не пользовался PowerShell'ом. К тому же это общедоступная таблица, которой пользуюсь не я один, поэтому да, предпочтительно в Google sheets.
И если через PowerShell, то можно потом будет перевести информацию в таблицу, чтобы она автообновлялась?
(Добавление)
Мне бы теперь разобраться, как вычленять информацию из web-интерфейса аукциона. Там мало того, что нет никаких XPath, так еще и двухфакторную аутентификации с паролем авторизации нужно как-то передавать.
(Добавление)
В общем нормально, с помощью костылей обошелся без web-интерфейса аукциона и собрал данные с сайта bdocodex.com, как изначально и планировал. В таблице продемонстрировал.
Но если Вы поможете разобраться, как работать с web-интерфейсом, буду очень благодарен!
(Добавление)
Могу даже дать логин, пароль, и код аутентификации, если вам не хочется заморачиваться с регистрацией. Я сам его создал только для аукциона.
 
 Top
Kostick
Отправлено: 23 Апреля, 2024 - 19:38:12
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




 Zireael пишет:
Обязательно через таблицы делать?
Можно через PowerShell.

Zireael, а вы можете помочь с вопросом по поводу получения данных через Web-интерфейс?
Я так понял, можно написать программу, которая бы отправляла запросы на сервер и принимала ответы с сервера. Но я не знаю, с чего начать.
 
 Top
Kostick
Отправлено: 23 Апреля, 2024 - 23:05:34
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




Чтобы отправлять и принимать запросы, воспользовался программой Postman.
Заметил, что при заходе на сайт, я получаю токен. С ним, логином и паролем авторизуюсь. Далее мне снова присваивается другой токен, с ним и ОТР я прохожу двухфакторную аутентификацию.
Скриншот тела запроса, который я отправляю, когда нажимаю кнопку "Вход":(для просмотра ссылки Вам необходимо авторизоваться) (Добавление)
Вроде вот что получилось:
При отправке логина и пароля:
POST на адрес:(для просмотра ссылки Вам необходимо авторизоваться) Тело:
__RequestVerificationToken: токен
_returnUrl: https%3a%2f%2ftrade.ru.playblackdesert.com%2fauthCallback
_email: morozovkv8@gmail.com
_password: пароль

При отправке ОТР:
POST на адрес:(для просмотра ссылки Вам необходимо авторизоваться) Тело:
__RequestVerificationToken: pozyQXSSje6o3PukcYj2DUq4Ugv-QZmn8u_jJ0f4UNHxFkB4xXcbRHA02bFN7zr-aakyQkSNgAFGg6jpiKh-YdcmAMvJrSMbfMC_fKIxQis1
_returnUrl:(для просмотра ссылки Вам необходимо авторизоваться) isOtpBackupCode: false
otpKey: код отр

При вводе пин-кода:
POST на адрес:(для просмотра ссылки Вам необходимо авторизоваться) Тело:
__RequestVerificationToken: gC2ZpJsY80aSCnPSinCZ_nLLRmtphK9zHUlX8pWAJ2iS3sDkhZLGkMi4g9FDNb-IcuJXCWnk26r23gwtdQEmAszTX7Ty5hG1wJn7WtVdBeA1
secondPwd: пин-код
 
 Top
Kostick
Отправлено: 24 Апреля, 2024 - 10:46:24
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




Теперь понял, что не нужно было проходить никакую авторизацию, потому что POST-запрос спокойно отправляется и без нее на сервер.
Я теперь просто не могу придумать, как "перемещаться" по аукциону. Потому что чтобы вызвать команду "покупка", я нажимаю мышью, но при этом будто ничего не отсылается на сервер, а только приходит. Т..е. GET'а нет, только POST в виде уже результата.
И еще нужно это все реализовать на Python'е, чтобы потом вставить в Kibor, и из Kibor'а отправлять полученные с сервера данные в мою Google-таблицу
 
 Top
Kostick
Отправлено: 29 Апреля, 2024 - 18:30:26
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020  
Репутация: 1




Хотя нет, ошибся, без авторизации просто не получается в дальнейшем получать данные кроме главной страницы, пишет:
 Цитата:
Веб-аукцион доступен, если склад аукциона в игре был использован хотя бы раз.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Заказать скрипт »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.




Powered by