Exemple #1
0
 /**
  * Get Html throught CasperJs
  * @param string $url
  * @param array $params - [
  *                  'proxy' => ['host' => '',  'port' => '', 'login' => '', 'password' => ''],
  *                  'waitForSelector' => ['#idOrOtherSel' => 1000]
  *              ]
  * @return array
  */
 public static function getHtmlByCasper($url, array $params = [])
 {
     $options = [];
     if (!empty($params['proxy'])) {
         $options['proxy'] = "{$params['proxy']['host']}:{$params['proxy']['port']}";
         $options['proxy-auth'] = "{$params['proxy']['login']}:{$params['proxy']['password']}";
     } elseif (!empty(Proxy::$proxy)) {
         $proxy = current(Proxy::$proxy);
         $options['proxy'] = "{$proxy['host']}:{$proxy['port']}";
         $options['proxy-auth'] = "{$proxy['login']}:{$proxy['password']}";
     }
     $casper = new Casper(Yii::$app->params['casperJsPath']);
     $casper->setUserAgent(self::WEB_BROWSER);
     $casper->setOptions($options);
     $casper->start($url);
     if (!empty($params['waitForSelector'])) {
         $casper->waitForSelector(key($params['waitForSelector']), current($params['waitForSelector']));
     }
     $casper->run();
     return ['currentUrl' => $casper->getCurrentUrl(), 'html' => $casper->getHTML()];
 }