Перейти к содержимому

Фотография

Селениум не корректно работает на сервере


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 kupurim

kupurim

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 18 января 2019 - 11:59

Здравствуйте.

Есть сайт с парсером на селениуме. Нужен он для того что бы с сайта https://www.myscore.com.ua/ взять матчи которые будут завтра - http://joxi.ru/YmE6OVMc05kJJ2 После нажатия загружается список лиг с матчами, но некоторые лиги свернуты - http://joxi.ru/4AkkJ3qiyZ9X6A
 
Проблема заключается в следующем, на сервере селениум то не может дождаться полной загрузки страницы (что бы выполнить скрипт по переходу на завтра, это изредка решается перезагрузкой сервера), то бывает что не может нажать на кнопку (span) что бы показались все матчи. И выдает такую ошибку в этом случае - http://joxi.ru/zANON0WSB3d1Zr . В первом он не может выполнить js скрипт «change_date('tomorrow')».
Что бы все проверить установил у себя под виндовс selenium и проверил, с ПК все отлично отрабатывает, вижу как в браузере эмулируется работа. Но при переносе кода на сервер работает со сбоями.
Используется selenium-server-standalone-3.4.0.jar
Google Chrome 71.0.3578.98 на сервере и такая же на виндовсе.
На сервере - CentOS Linux release 7.3.1611 (Core)
ChromeDriver 2.45.615279 на сервере, на ПК ChromeDriver 2.45.615291
И получается что на ПК парсит на завтра 600 матчей, а через сайт 200
 
На сайте используется php, библиотека - https://github.com/f...k/php-webdriver

  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 21 января 2019 - 07:38

Попробуйте использовать хеадлесс режим.

+ Сам сервер селениума уже староват, надо бы попробовать свежую версию.


  • 0

#3 kupurim

kupurim

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 21 января 2019 - 08:56

Вот настройки селениума:

$host = 'http://localhost:4444/wd/hub'; // this is the default 
$capabilities = DesiredCapabilities::htmlUnitWithJS();

// For Chrome
$options = new ChromeOptions();  
$prefs = array('download.default_directory' => '/var/www/data/tmp_selenium/');
$options->setExperimentalOption('prefs', $prefs);
$options->addArguments(array(  
    '--window-size=1024,768', '--headless', '--no-sandbox'
)); 
$capabilities = DesiredCapabilities::chrome(); 
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = RemoteWebDriver::create($host, $capabilities, 5000);

Так же пробовал версию 3.8.0 и это не помогло.


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 21 января 2019 - 12:37

Сделайте размер окна такой же как у вас на десктопе. - --window-size=1024,768


  • 0

#5 kupurim

kupurim

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 21 января 2019 - 13:00

Сделайте размер окна такой же как у вас на десктопе. - --window-size=1024,768

 

Устанавливал 1920х1080, выдало ошибку что функция js не определена (4 из 5 раз, на 5-й пошло дальше и достало половину матчей из всех, пришлось сервер перезапустить).

Так же попробовал  1620х800, так же половину только достает. 


  • 0

#6 kupurim

kupurim

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 23 января 2019 - 08:23

Прошу подскажите что может быть.


  • 0

#7 LexDraven

LexDraven

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • Город:Пермь

Отправлено 25 января 2019 - 04:39

Прошу подскажите что может быть.

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


  • 0

#8 kupurim

kupurim

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 25 января 2019 - 09:08

 

Прошу подскажите что может быть.

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

 

Да, я об этом уже думал. Но там приходит далеко не json, а какая-то непонятная строка, вот кусок с ответа:

SA÷1¬~ZA÷АВСТРАЛИЯ: Лига А¬ZEE÷OjWW1naM¬ZB÷24¬ZY÷Австралия¬ZC÷tdBtmknB¬ZD÷p¬ZE÷QismaKZH¬ZF÷0¬ZO÷1¬ZG÷1¬ZH÷24_OjWW1naM¬ZJ÷2¬ZL÷/football/australia/a-league/¬ZX÷00Австралия   009тралия0000000000186000Лига А 

И как его привести в нормальный вид не понятно. А копать весь js код самого сайта не очень хочется (на первый взгляд там какая-то магия происходит, думаю проще настроить сам селениум).


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных