Працюю над одним проектом, зробив парсер (на js у вигляді плагіну) для одного дуже специфічного сайту на якому торгує замовник. На сайті специфічиний захист від ріхних ботів та парсерів, але все одно дірки в цьому сайті є і для парсингу товарів і для швидкого виставляння цін по цим товарам. Є поки одна велика проблема. Кількість товарів в різні дні різна, і в живому режимі ціни передаються лише на ті товари що видно на екрані. Всі товари вивести одночасно можна лише скрутивши масштаб на мінімум а також якщо монітор перевести на книжну орієнтацію. Тоді всі товари 100+ відображаються одночасно і можна їх ціни в ріалтаймі читати та торгувати. Але оперватор тоді не має можливості бачити що відбувається на сайті, тобто він може лише моніторити логи парсера в окремій программі і руками він не як не може втрутитися в торги. Сайт підтриує лише одну одночасну сессію, тобто не можно на другому обладнанні з цього ж облікового запису моніторити торги чи торгувати, лише 1 браузер відкритий. Парсити сам протокол не хочу бо його вже досліджував - дуже багато сміття - на кожний товар мінімум по 40-50 параметрів в json, 3 частина яких різні хеші. Може камради знають екзотичні способи вирішення проблеми?
selenium webdriver заточений для парсінга (та й не тільки) без відображення на моніторі хоча досить потужна штука я на ньому писав роботів для обхіду сторінок з капчами але тут ситуація саме в тому щоб людина моніторила, правильно?
ТС, чи не пробував скролити сторінку догори потім вниз або навпаки, window.scrollxy()?
я уже сталкивался с проектами на селениум под питоном и под c#. Какое он мне даст преимущество по сравнению с ява скриптами использованными в моем расширении для хрома и доступом к разделу network через который у меня идет отправка приказов и перехват всех данных для авторизации? Я двумя руками за освоение новых инструментов, просто подскажите в чем его жирные плюсы по сравнению с вышеупомянутыми инструментами в контексте моей задачи.
hollywood 29.01.2023 18:31 пишет: selenium webdriver заточений для парсінга (та й не тільки) без відображення на моніторі хоча досить потужна штука я на ньому писав роботів для обхіду сторінок з капчами але тут ситуація саме в тому щоб людина моніторила, правильно?
ТС, чи не пробував скролити сторінку догори потім вниз або навпаки, window.scrollxy()?
Справа в тому що потрібна одночасна робота (ну майже одночасна, я думаю домовитись з клієнтами про те що роботу буде відведено останні 5-10 секунду торгів). І на цьому сайті контроль авторизацій. Вся інформація для парсингу та торговлі виключно за логіном та паролем. Ну і одночасно може працювати з сайтом лише в 1 браузері, допускаю що навіть одна відкрита вкладка в браузері. Я тут подумав що краще не скролити а за 5-10 секунд программно (наприклад скриптом для пітона) виставити масштаб від віндою поменьше і всі товари влізуть на екран і встигне відпрацювати робот після того як оперетор промоніторив все що міг і вже руками не буде коригувати ціни.
написав скріпт на пітоні для перевороту екрану, але у клієнта все задушено правами і админ там не хоче ні чого міняти. Пітоновий скрипт там не працює, взагалі там пітон не працює. Тому для маніпуляцій з екраном лишаються або bat скрипти з командами або win api. Знайшов код +- такий
Да он вроде стандартный, у меня в 11 есть. Может тоже надо с админскими правами запускать. Еще через горячие клавиши можно попробовать как здесь описано
Якщо є доступ до json і він не блочититься через cors - то чому б не парсити той json? Обмеження на загрузку тільки тих даних, що є на екрані - вочевидь чисто софтові, типу "висота екрану / висоту рядка = кількість строк, які потрібно загружати", що у реквесті виглядає як ?from=50&to=100 Далі json вичіщається від зайвого сміття, загружається в свою локальну базу і роздається на потрібну кількість юзерів.
Якщо прямий доступ до json блокується (а скоріш за все це так) - selenium -> емуляція екрану браузера в млн пікселів по висоті -> збір даних -> своя база -> роздача юзерам.
Для високочастотного пиз**нгу даних не підійде, але працюватиме))
SARS 02.02.2023 15:10 пишет: Да он вроде стандартный, у меня в 11 есть. Может тоже надо с админскими правами запускать. Еще через горячие клавиши можно попробовать как здесь описано
щось не працює на 10-ці. У мене ноут під 10-кою працює і клінт на десктопі теж під десяткою. Думаю якісь проблеми с драйверами.
Reject 02.02.2023 15:55 пишет: Якщо є доступ до json і він не блочититься через cors - то чому б не парсити той json? Обмеження на загрузку тільки тих даних, що є на екрані - вочевидь чисто софтові, типу "висота екрану / висоту рядка = кількість строк, які потрібно загружати", що у реквесті виглядає як ?from=50&to=100 Далі json вичіщається від зайвого сміття, загружається в свою локальну базу і роздається на потрібну кількість юзерів.
Якщо прямий доступ до json блокується (а скоріш за все це так) - selenium -> емуляція екрану браузера в млн пікселів по висоті -> збір даних -> своя база -> роздача юзерам.
Для високочастотного пиз**нгу даних не підійде, але працюватиме))
дивіться, там все дуже закручено. Всю інфу я отримую через хром плагін через розділ network, в мене вся інфа що приходить в браузер доступна. Але там хардкор з параметрами запитів, там оновлення інформації іде спочатку через сокети, а потім окремі джейсон запити пропорціонально прокрутці сторінки в браузері. Клієнт готовий купити більший монітор для тестів. В принципі після кількох тестів побачили що все читається нормально але реально 100+ товарів одночано краще моніторити на великому моніторі.
Reject 02.02.2023 15:55 пишет: Якщо є доступ до json і він не блочититься через cors - то чому б не парсити той json? Обмеження на загрузку тільки тих даних, що є на екрані - вочевидь чисто софтові, типу "висота екрану / висоту рядка = кількість строк, які потрібно загружати", що у реквесті виглядає як ?from=50&to=100 Далі json вичіщається від зайвого сміття, загружається в свою локальну базу і роздається на потрібну кількість юзерів.
Якщо прямий доступ до json блокується (а скоріш за все це так) - selenium -> емуляція екрану браузера в млн пікселів по висоті -> збір даних -> своя база -> роздача юзерам.
Для високочастотного пиз**нгу даних не підійде, але працюватиме))
дивіться, там все дуже закручено. Всю інфу я отримую через хром плагін через розділ network, в мене вся інфа що приходить в браузер доступна. Але там хардкор з параметрами запитів, там оновлення інформації іде спочатку через сокети, а потім окремі джейсон запити пропорціонально прокрутці сторінки в браузері. Клієнт готовий купити більший монітор для тестів. В принципі після кількох тестів побачили що все читається нормально але реально 100+ товарів одночано краще моніторити на великому моніторі.
Із того, що вдалося зрозуміти: - є якийсь сервіс, доступ до якого проплачено(?) на одного юзера. - є потреба у вікористанні даних з цього сервісу одночасно декількома юзерами. - для цього був створений плагін, який... робить шо? - "Клієнт готовий купити більший монітор для тестів" - для тестів чого? Чи більше інформації влізе на більший екран? Влізе більше - змінити масштаб сайту або роздільну здатність монітора можна і без купівлі нового.
дякую всім за допомогу Клієнт знайшов на офісі монітор з поворотним кронштейном, і на робочому місці тепер 2 моніка. Один для торгів спеціально виставленний в книжну орієнтацію і в нього влазять всі товари. Драйвера кривенькі, трошки тупить але все працює, дале вже нюанси по швидкості але проблему поки що вирішено без кардинальних змін софту.