Kostick |
Отправлено: 22 Апреля, 2024 - 00:37:08
|
Мастер
Покинул форум
Сообщений всего: 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) |
|
|
Kostick |
Отправлено: 22 Апреля, 2024 - 03:08:51
|
Мастер
Покинул форум
Сообщений всего: 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) |
|
|
Kostick |
Отправлено: 22 Апреля, 2024 - 17:42:41
|
Мастер
Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020
Репутация: 1
|
Zireael пишет: Обязательно через таблицы делать?
Можно через PowerShell.
Я никогда не пользовался PowerShell'ом. К тому же это общедоступная таблица, которой пользуюсь не я один, поэтому да, предпочтительно в Google sheets.
И если через PowerShell, то можно потом будет перевести информацию в таблицу, чтобы она автообновлялась?
(Добавление)
Мне бы теперь разобраться, как вычленять информацию из web-интерфейса аукциона. Там мало того, что нет никаких XPath, так еще и двухфакторную аутентификации с паролем авторизации нужно как-то передавать.
(Добавление)
В общем нормально, с помощью костылей обошелся без web-интерфейса аукциона и собрал данные с сайта bdocodex.com, как изначально и планировал. В таблице продемонстрировал.
Но если Вы поможете разобраться, как работать с web-интерфейсом, буду очень благодарен!
(Добавление)
Могу даже дать логин, пароль, и код аутентификации, если вам не хочется заморачиваться с регистрацией. Я сам его создал только для аукциона. |
|
|
Kostick |
Отправлено: 24 Апреля, 2024 - 10:46:24
|
Мастер
Покинул форум
Сообщений всего: 178
Дата рег-ции: Авг. 2020
Репутация: 1
|
Теперь понял, что не нужно было проходить никакую авторизацию, потому что POST-запрос спокойно отправляется и без нее на сервер.
Я теперь просто не могу придумать, как "перемещаться" по аукциону. Потому что чтобы вызвать команду "покупка", я нажимаю мышью, но при этом будто ничего не отсылается на сервер, а только приходит. Т..е. GET'а нет, только POST в виде уже результата.
И еще нужно это все реализовать на Python'е, чтобы потом вставить в Kibor, и из Kibor'а отправлять полученные с сервера данные в мою Google-таблицу |
|
|
|