Advertisement
Nexo78

Untitled

Oct 29th, 2018
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.34 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Copyright (c) 2018.
  4.  * Author NightTrolley
  5.  */
  6.  
  7. require ('../parser/phpQuery-onefile.php');
  8.  
  9. $db_connect = mysqli_connect("localhost", "root", "", "osclass");
  10.  
  11. $categories = array(
  12.             'детская одежда' => 'детская одежда',
  13.             'детская обувь' => 'детская обувь',
  14.             'детские коляски' => 'детские коляски',
  15.             'детская мебель' => 'детская мебель',
  16.             'игрушки' => 'игрушки',
  17.             'товары для кормления' => 'товары для кормления',
  18.             'прочие детские товары' => 'прочие детские товары',
  19.             'квартиры,комнаты' => 'продажа квартир',
  20.             'земля' => 'продажа земли',
  21.             'дома' => 'продажа домов',
  22.             'коммерческая недвижимость' => 'продажа помещений',
  23.             'гаражи, парковки' => 'продажа гаражей и стоянок',
  24.             'посуточная аренда жилья' => 'аренда квартир',
  25.             'недвижимость за рубежом' => 'продажа за рубежом',
  26.             'легковые автомобили' => 'легковые автомобили',
  27.             'сельхозтехника' => 'сельхозтехника',
  28.             'прицепы / дома на колесах' => 'дома на колесах',
  29.             'мото' => 'мототехника',
  30.             'водный транспорт' => 'водный транспорт',
  31.             'другой транспорт' => 'другой транспорт',
  32.             'грузовые автомобили' => 'грузовые автомобили',
  33.             'воздушный транспорт' => 'воздушный транспорт',
  34.             'запчасти для транспорта' => 'запчасти и аксессуары',
  35.             'кошки' => 'кошки',
  36.             'собаки' => 'собаки',
  37.             'рептилии' => 'рептилии',
  38.             'зоотовары' => 'зоотовары',
  39.             'птицы' => 'птицы',
  40.             'грызуны' => 'грызуны',
  41.             'сельхоз животные' => 'сельхоз животные',
  42.             'бесплатно (животные и вязка)' => 'животные даром',
  43.             'бюро находок' => 'бюро находок',
  44.             'другие животные' => 'другие животные',
  45.             'посуда / кухонная утварь' => 'посуда',
  46.             'мебель' => 'мебель',
  47.             'инструменты' => 'инструменты',
  48.             'комнатные растения' => 'комнатные растения',
  49.             'сад / огород' => 'садовые растения',
  50.             'продукты питания / напитки' => 'продукты питания',
  51.             'предметы интерьера' => 'предметы интерьера',
  52.             'строительство / ремонт' => 'строительство и ремонт',
  53.             'прочие товары для дома' => 'прочие товары для дома',
  54.             'компьютеры и комплектующие' => 'компьютеры',
  55.             'телефоны и аксессуары' => 'телефоны',
  56.             'фото / видео' => 'фототехника',
  57.             'аудиотехника' => 'аудиотехника',
  58.             'аксессуары и комплектующие' => 'аксессуары и комплектующие',
  59.             'игры и игровые приставки' => 'игры и игровые приставки',
  60.             'техника для дома' => 'техника для дома',
  61.             'техника для кухни' => 'техника для кухни',
  62.             'прочая электроника' => 'прочая электроника',
  63.             'перевозки / аренда транспорта' => 'транспортные услуги',
  64.             'cтроительство / ремонт / уборка' => 'cтроительство / ремонт / уборка',
  65.             'финансовые услуги / партнерство' => 'финансовые услуги / партнерство',
  66.             'красота / здоровье' => 'здоровье, красота, фитнес',
  67.             'реклама / полиграфия / маркетинг / интернет' => 'реклама - полиграфия ',
  68.             'ремонт и обслуживание техники' => 'обслуживание - ремонт техники ',
  69.             'сырьё / материалы' => 'сырьё, материалы',
  70.             'продажа бизнеса' => 'продажа бизнеса',
  71.             'сетевой маркетинг' => 'маркетинг - интернет',
  72.             'прочие услуги' => 'прочие услуги',
  73.             'одежда/обувь' => 'одежда и обувь',
  74.             'для свадьбы' => 'все для свадьбы',
  75.             'подарки' => 'подарки',
  76.             'аксессуары' => 'аксессуары',
  77.             'красота / здоровье' => 'красота и здоровье',
  78.             'мода разное' => 'прочие товары',
  79.             'антиквариат / коллекции' => 'коллекционирование',
  80.             'спорт / отдых' => 'спорт и отдых',
  81.             'билеты' => 'билеты и путешествия',
  82.             'другое' => 'другое',
  83.             'музыкальные инструменты' => 'музыкальные инструменты',
  84. );
  85.  
  86. if(!empty($_POST['url'])){
  87.  
  88. }
  89. else{
  90.     echo "Введите url";
  91.     exit();
  92. }
  93. if(!empty($_POST['page_count'])) {
  94.  
  95.     $i = 1;
  96.     $j = $_POST['page_count'];
  97.     for ($i; $i<=$j; $i++){
  98.         $links[] = $_POST['url'] . '&page=' . $i;
  99.     }
  100.  
  101. }
  102. else{
  103.     echo "Введите кол-во страниц";
  104.     exit();
  105. }
  106.  
  107. $replace = array(
  108.     'Детский мир » ',
  109.     '» Одежда для девочек',
  110.     '» Одежда для мальчиков',
  111.     'Детская одежда »',
  112.     'Одежда для новорожденных',
  113.     'Квартиры, комнаты » ',
  114.     'Дома » ',
  115.     'Посуточная аренда жилья » ',
  116.     'Земля » ',
  117.     '» Audi',
  118.     '» Volkswagen',
  119.     '» Opel',
  120.     'Транспорт » ',
  121.     '» Saab',
  122.     '» Skoda',
  123.     '» Renault',
  124.     '» Ford',
  125.     '» Nissan',
  126.     '» Peugeot',
  127.     '» Hyundai',
  128.     '» Honda',
  129.     '» BMW',
  130.     '» Chevrolet',
  131.     '» Mazda',
  132.     '» Kia',
  133.     '» ВАЗ',
  134.     'и аксессуары » Аксессуары для телефонов',
  135.     'и аксессуары » Мобильные телефоны / смартфоны',
  136.     '» Прочая техника для дома',
  137.     '» Портативная акустика',
  138.     '» Пылесосы',
  139.     'Электроника » ',
  140.     '» Приставки',
  141.     ' и комплектующие » Настольные компьютеры',
  142.     '» Кофеварки / кофемолки',
  143.     'Животные »',
  144.     '» Медицина',
  145.     '» Volvo',
  146.     '» Chery',
  147.     '» Daewoo',
  148.     '» Fiat',
  149.     '» Renault',
  150.     '» Mercedes-Benz',
  151.     '» Dacia',
  152.     '» Subaru',
  153.     '» Toyota',
  154.     '» Suzuki',
  155.     'Все',
  156.     '/ напитки',
  157.     '» Кухонная мебель',
  158.     '» Мебель для гостиной',
  159.     '» Прочие стройматериалы',
  160.     '» Отделочные и облицовочные материалы',
  161.     '» Электроинструмент',
  162.     'Дом и сад »',
  163.     '» Отопление',
  164.     '» Мебель для спальни',
  165.     '» Кирпич и бетон и пеноблоки',
  166.     '» Бензоинструмент',
  167.     '» Офисная мебель'
  168.  
  169. );
  170.  
  171. function curl_content($url){
  172.     $ch = curl_init($url);
  173.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  174.     curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; WinNT; en; rv:1.0.2) Gecko/20030311 Beonex/0.8.2-stable');
  175.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  176.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  177.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER ,false);
  178.  
  179.     $html=curl_exec($ch);
  180.     unset($url);
  181.     return $html;
  182.  
  183. }
  184.  
  185. function category_replace($cat, $replace){
  186.  
  187.     $slash_replace = str_replace('/', 'и', $cat);
  188.     $replaces = str_replace($replace, '', $slash_replace);
  189.     return trim($replaces);
  190.  
  191. }
  192.  
  193. /**
  194.  * @param $url
  195.  * @param $id
  196.  * @param $token
  197.  * @return array
  198.  */
  199. function get_phone_number($url)
  200. {
  201.     $cookie_path = $_SERVER['DOCUMENT_ROOT'] . '/cookie.dat';
  202.     preg_match('|-ID(.*).html|', $url, $id);
  203.     $olx = curl_init($url);
  204.     curl_setopt($olx, CURLOPT_SSL_VERIFYPEER, false);
  205.     curl_setopt($olx, CURLOPT_RETURNTRANSFER, true);
  206.     curl_setopt($olx, CURLOPT_HEADER, 1);
  207.     curl_setopt($olx, CURLOPT_COOKIEFILE, $cookie_path);
  208.     curl_setopt($olx, CURLOPT_COOKIEJAR, $cookie_path);
  209.     $result = curl_exec($olx);
  210.     $content = $result;
  211.     curl_close($olx);
  212.     preg_match("|phoneToken = '(.*)';|", $result, $token);
  213.     $olx_number = curl_init('https://www.olx.ua/ajax/misc/contact/phone/' . $id[1] . '/?pt=' . $token[1]);
  214.     curl_setopt($olx_number, CURLOPT_HTTPHEADER, [
  215.         'Host: www.olx.ua',
  216.         'Accept: */*',
  217.         'Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3',
  218.         'Accept-Encoding: gzip, deflate, br',
  219.         'Connection: keep-alive',
  220.         'X-Requested-With: XMLHttpRequest'
  221.     ]);
  222.     curl_setopt($olx_number, CURLOPT_REFERER, $url);
  223.     curl_setopt($olx_number, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  224.     curl_setopt($olx_number, CURLOPT_COOKIEFILE, $cookie_path);
  225.     curl_setopt($olx_number, CURLOPT_SSL_VERIFYPEER, false);
  226.     curl_setopt($olx_number, CURLOPT_RETURNTRANSFER, true);
  227.     $result = curl_exec($olx_number);
  228.     curl_close($olx_number);
  229.     unlink( $_SERVER['DOCUMENT_ROOT'].'/cookie.dat');
  230.     $json = json_decode($result);
  231.     return array($content, $json);
  232. }
  233.  
  234.  
  235. /**
  236.  * @param $db_connect
  237.  * @param $linkimgbd
  238.  */
  239. function get_img($db_connect, $imgs){
  240.  
  241.     $sel = mysqli_query($db_connect, "select pk_i_id from oc_t_item_resource ORDER by pk_i_id desc");
  242.     $feth = mysqli_fetch_all($sel);
  243.  
  244.     $pk_i_id = $feth[0][0] +1;
  245.     $orig_img_name = $pk_i_id;
  246.     $thumb_img_name = $pk_i_id . '_thumbnail' ;
  247.     $preview_img_name = $pk_i_id . '_preview' ;
  248.  
  249.     $saveto1 = '../dpm/oc-content/uploads/28/' . $orig_img_name . '.jpg';
  250.     $saveto2 = '../dpm/oc-content/uploads/28/' . $thumb_img_name . '.jpg';
  251.     $saveto3 = '../dpm/oc-content/uploads/28/' . $preview_img_name . '.jpg';
  252.     $ch = curl_init($imgs);
  253.     curl_setopt($ch, CURLOPT_HEADER, 0);
  254.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  255.     curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  256.     $raw = curl_exec($ch);
  257.     curl_close($ch);
  258.  
  259.     $fp = fopen($saveto1, 'w');
  260.     $fp2 = fopen($saveto2, 'w');
  261.     $fp3 = fopen($saveto3, 'w');
  262.  
  263.     fwrite($fp, $raw);
  264.     fwrite($fp2, $raw);
  265.     fwrite($fp3, $raw);
  266.     fclose($fp);
  267.     fclose($fp2);
  268.     fclose($fp3);
  269. }
  270.  
  271.  
  272. /**
  273.  * @param $pricebd
  274.  * @param $titlebd
  275.  * @return string
  276.  */
  277. function price_replace($pricebd)
  278. {
  279.     $price_replace = str_replace(" грн.", "", $pricebd);
  280.     $r = str_replace(' ', '', $price_replace) . '000000';
  281.     return $r;
  282. }
  283.  
  284. function country ($db_connect, $location){
  285.  
  286.     $explode = explode(",", $location);
  287.  
  288.     $city = trim($explode[0]);
  289.     $reg = trim($explode[1]);
  290.     $region_sql = mysqli_query($db_connect, "select pk_i_id from oc_t_region where s_name = '$reg'");
  291.     $city_sql = mysqli_query($db_connect, "select pk_i_id from oc_t_city where s_name = '$city'");
  292.     $region_res = mysqli_fetch_all($region_sql);
  293.     $city_res = mysqli_fetch_all($city_sql);
  294.  
  295.     return array($region_res, $city_res, $reg, $city);
  296.  
  297. }
  298.  
  299. /**
  300.  * @param $db_connect
  301.  * @param $titlebd
  302.  * @param $r
  303.  * @param $namedb
  304.  * @param $contentbd
  305.  * @param $telbd
  306.  * @param $img_name
  307.  */
  308. function insert_querys($db_connect, $titlebd, $r, $namedb, $contentbd, $telbd, $t, $reg, $c, $reg_name, $city_name)
  309. {
  310.     $select_query = mysqli_query($db_connect, "select s_title from `oc_t_item_description`");
  311.     $query_res = mysqli_fetch_all($select_query, MYSQLI_ASSOC);
  312.     $time = date('Y-m-d H:i:s');
  313.  
  314.     if ($query_res !== $titlebd) {
  315.  
  316.         mysqli_query($db_connect, "insert into `oc_t_item` (fk_i_category_id, dt_pub_date, i_price, fk_c_currency_code, s_contact_name, b_active) values ( '$t', '$time', '$r', 'GRN','$namedb', '1' )");
  317.         $id = mysqli_insert_id($db_connect);
  318.         mysqli_query($db_connect, "insert into `oc_t_item_description` (fk_i_item_id, s_title, s_description) values ($id , '$titlebd', '$contentbd')");
  319.         mysqli_query($db_connect, "insert into `oc_t_item_location` (fk_i_item_id, fk_i_region_id, fk_i_city_id, s_city_area, fk_c_country_code, s_country, s_region, s_city) values ('$id', '$reg', '$c', '$telbd', 'UA', 'Ukraine', '$reg_name', '$city_name')");
  320.         mysqli_query($db_connect, "insert into `oc_t_item_resource` (fk_i_item_id, s_name, s_extension, s_content_type, s_path) values ('$id', 'img', 'jpg', 'image/jpeg',  'oc-content/uploads/28/')");
  321.  
  322.     }
  323. }
  324.  
  325. foreach ($links as $l) {
  326.     set_time_limit(0);
  327.     $html = curl_content($l);
  328.     phpQuery::newDocument($html);
  329.     $menu = pq('#offers_table')->find('.breakword');
  330.     $prices = pq('.space')->find('a.detailsLink');
  331.     $cat = pq('color-9')->find('.color-9>small')->text();
  332.  
  333.     foreach ($menu as $res) {
  334.  
  335.         $pqres = pq($res);
  336.         $linkarray = $pqres->find('a')->attr('href');
  337.         $pricearray = $pqres->find('p.price>strong')->text();
  338.         $title = $pqres->find('a.marginright5>strong')->text();
  339.         $cat = $pqres->find('.color-9>small')->text();
  340.         $url = $linkarray;
  341.  
  342.         list($content, $json) = get_phone_number($url);
  343.  
  344.         phpQuery::newDocument($content);
  345.         $htmlcon = pq('#textContent>p')->text();
  346.         $big_img = pq('.photo-glow')->find('img')->attr('src');
  347.  
  348.         foreach (pq('.tcenter>.photo-glow')->find('img') as $imgs) {
  349.             $imgs = pq($imgs)->attr('src');
  350.             get_img($db_connect, $imgs);
  351.         }
  352.  
  353.         $name = pq('.offer-user__details>h4')->find('a')->text();
  354.         $location = pq('.offer-titlebox__details')->find('.show-map-link')->text();
  355.         phpQuery::newDocument($json->value);
  356.         $tel = pq('span')->text();
  357.  
  358.         if (empty($tel)) {
  359.             $tel = $json->value;
  360.         }
  361.  
  362.         $resarray = array(
  363.             'link' => $linkarray,
  364.             'price' => $pricearray,
  365.             'title' => $title,
  366.             'tel' => $tel,
  367.             'content' => $htmlcon,
  368.             'name' => $name,
  369.         );
  370.  
  371.         $linkbd = $resarray['link'];
  372.         $pricebd = $resarray['price'];
  373.         $titlebd = $resarray['title'];
  374.         $telbd = $resarray['tel'];
  375.         $namedb = $resarray['name'];
  376.         $contentbd = $resarray['content'];
  377.  
  378.         $r = price_replace($pricebd);
  379.  
  380.         $rep = category_replace($cat, $replace);
  381.         $sql = mysqli_query($db_connect, "SELECT `fk_i_category_id`, `s_name` FROM `oc_t_category_description` WHERE 1");
  382.         $result = mysqli_fetch_all($sql);
  383.         list($reg_num, $city_num, $reg_name, $city_name) = country($db_connect, $location);
  384.  
  385.         foreach ($reg_num as $region) {
  386.             foreach ($region as $reg) {
  387.  
  388.             }
  389.         }
  390.  
  391.         foreach ($city_num as $city) {
  392.             foreach ($city as $c) {
  393.  
  394.             }
  395.         }
  396.  
  397.         foreach ($result as $t) {
  398.             if ($t[1] == $rep) {
  399.  
  400.                 insert_querys($db_connect, $titlebd, $r, $namedb, $contentbd, $telbd, $t[0], $reg, $c, $reg_name, $city_name);
  401.  
  402.             }
  403.  
  404.         }
  405.     }
  406.  
  407. }
  408.  
  409. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement