예제 #1
0
 public function testGetPositionData()
 {
     $provider = new HotlineProvider();
     $content = file_get_contents(__DIR__ . '/../fixtures/apple-iphone-5s-16gb-space-gray.html');
     $actualPosition = new Position();
     $actualPosition->setTitle('Apple iPhone 5S 16GB (Space Gray)')->setCategory('smart_phone')->setSrc('http://hotline.ua/mobile-mobilnye-telefony-i-smartfony/apple-iphone-5s-16gb-space-gray/');
     $provider->getPositionData($actualPosition, $content);
     $expectedAttributes = ['Тип' => 'Смартфон', 'Тип SIM-карты' => 'Nano-SIM', 'Стандарт' => 'GSM 850/900/1800/1900, UMTS 850/900/1700/2100/1900/2100, LTE (Bands 1, 2, 3, 4, 5, 8, 13, 17, 19, 20, 25)', 'Высокоскоростная передача данных' => 'GPRS, EDGE, HSDPA (до 42 MБ/c), HSUPA (до 5,76 Мб/с), LTE (DL до 100 Мб/с, UL - до 50 Мб/с)', 'Количество SIM-карт' => '1', 'Операционная система' => 'iOS', 'Оперативная память, ГБ' => '1', 'Встроенная память, ГБ' => '16', 'Слот расширения' => 'нет', 'Габариты, мм' => '123,8x58,6x7,6', 'Масса, г' => '112', 'Защита от пыли и влаги' => 'нет', 'Аккумуляторная батарея' => 'Li-Ion, 1570 мАч (несъемная)', 'Время работы (данные производителя)' => 'разговор - до 10ч (3G), ожидание - до 250ч, интернет-браузинг - до 8/10/10ч (3G, LTE, Wi-Fi), просмотр видео - до 10ч, аудио - до 40ч', 'Диагональ, дюймы' => '4', 'Разрешение' => '1136x640', 'Тип матрицы' => 'IPS', 'PPI' => '326', 'Датчик регулировки яркости' => 'есть', 'Сенсорный экран (тип)' => 'сенсорный (емкостной)', 'Другое' => 'face detection (распознавание лиц в кадре), панорамная съемка, фронтальная камера записывает видео 30 к/c', 'Процессор' => 'Apple A7 + GPU PowerVR G6430', 'Тип ядра' => 'Cyclone', 'Количество ядер' => '2', 'Частота, ГГц' => '1,3', 'Основная камера, МП' => '8', 'Автофокус' => 'есть', 'Видеосъемка' => '1920х1080 точек (30 к/с), 1280х720 точек (120 к/с), стабилизация изображения, 3-х цифровой зум', 'Вспышка' => 'двойная светодиодная', 'Фронтальная камера, МП' => '1,2', 'Wi-Fi' => '802.11 a/b/g/n', 'Bluetooth' => '4.0', 'GPS' => 'есть', 'IrDA' => 'нет', 'NFC' => 'нет', 'Интерфейсный разъем' => 'USB 2.0 (Lightning)', 'Аудиоразъем' => '3,5 мм', 'MP3 плеер' => 'есть', 'FM-радио' => 'нет', 'Тип корпуса' => 'моноблок (неразборный)', 'Материал корпуса' => 'алюминий', 'Тип клавиатуры' => 'экранный ввод', 'Еще' => 'сканер отпечатков пальцев, медиапроигрыватель, приемник a-GPS/GLONASS, видеотелефония, трехосевой гироскоп,  акселерометр, цифровой компас, датчик приближение, датчик освещенности, голосовой помощник Siri', 'Производитель' => 'Apple', 'Товар на сайте производителя' => 'www.apple.com/iphone-5s/specs/'];
     $expectedPosition = new Position();
     $expectedPosition->setTitle('Apple iPhone 5S 16GB (Space Gray)')->setCategory('smart_phone')->setSrc('http://hotline.ua/mobile-mobilnye-telefony-i-smartfony/apple-iphone-5s-16gb-space-gray/')->setAttributes($expectedAttributes);
     $this->assertEquals($expectedPosition, $actualPosition);
 }
예제 #2
0
 /**
  * @param Position $position
  * @param string $content
  */
 public function getPositionData(Position $position, $content)
 {
     $crawler = new Crawler($content);
     $trs = $crawler->filter('#full-props-list tr');
     $data = [];
     if ($trs->count() > 0) {
         foreach ($trs as $tr) {
             $crawler->clear();
             $crawler->addNode($tr);
             $th = $crawler->filter('th');
             $td = $crawler->filter('td');
             if ($th->count() > 0 && $td->count() > 0) {
                 $data[trim($th->text())] = trim($td->text());
             }
         }
     }
     $position->setAttributes($data);
 }