Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: С помощью чего решить?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
skk
Отправлено: 05 Марта, 2012 - 09:12:12
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Ребят возникла такая ситуация.
Нужно следующее:
Имеется страница создания "товара", нужно чтобы при создании, если имеется галочка на определенном пункте скрипт:

1)Переходил по адресу http:// sait.ru
2)Получив ответ от сайта, он брал кое-какую информацию со страниц сайта
3)Возвращал информацию пользователю, занеся в бд.

Проблема в этих 3 функциях. Подскажите в какую сторону копать, или подкиньте пример. буду благодарен!
 
 Top
Panoptik
Отправлено: 05 Марта, 2012 - 09:15:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




1) curl или file_get_contents
2) preg_match preg_match_all
3) тут уже просто работа с бд
(Добавление)
вот пример парсера. вытаскивает с сайта информацию о товарах(название, цена, описание) и картинки. всё это сохраняется в базу. скрипт вытащил 5Гб картинок и занес информацию в базу на 60Мб. всё это происходило в течении 3-х дней
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     date_default_timezone_set('Europe/Kiev');
  3.     ini_set('max_execution_time',0);
  4.     ini_set('allow_url_fopen',1);
  5.     ini_set('display_errors',1);
  6.     error_reporting(E_ALL);
  7.    
  8.     mysql_connect('localhost','root','root') or die('Cannot connect to MySql Server');
  9.     mysql_select_db('parser') or die('Cannot connect to DB');
  10.    
  11.     $last_id = mysql_fetch_row(mysql_query("SELECT `original_id` FROM `goods` ORDER BY `id` DESC LIMIT 1"));
  12.     $last_db_id = $last_id[0];
  13.     $f_arr = file('log.txt');
  14.     $last_file = array_pop($f_arr);
  15.     $last_file = explode('.',$last_file);
  16.     $last_file_id = $last_file[0];
  17.     $start = 26719;
  18.     $start = max(array($last_file_id,$last_db_id,$start));
  19.     $end = 40000;
  20.     $link = "http://instore.kz/product_info.php/products_id/";
  21.     $fp = fopen("log.txt","a+");
  22.     $separator = "\n-----------------------------------------------------------------------\n\n";
  23.     $file_header = $separator."Link: ".$link."\n\tStart: ".$start."\n\tEnd: ".$end."\n\n\tDate: ".date('Y-m-d H:i:s')."\n\n";
  24.     fputs($fp,$file_header);
  25.     fclose($fp);    
  26.    
  27.    
  28.     for($i=$start;$i<$end;$i++) {
  29.         $content = file_get_contents($link.$i);
  30.         preg_match('/Товар не найден!/',$content,$matches);
  31.         if($matches) {
  32.             print "<div>";
  33.             ob_start();
  34.             print $i.". \t";
  35.             print "Товар не найден!";
  36.             print " <strong>".date('H:i:s')."</strong>\n";
  37.             $data = ob_get_contents();
  38.             ob_end_clean();
  39.             $fp = fopen("log.txt","a+");
  40.             fputs($fp,$data);
  41.             fclose($fp);
  42.             print $data;
  43.             print "</div>";
  44.             flush();
  45.         } else {
  46.             $arr_good = array();
  47.             //id парсинга
  48.             $id = $i;
  49.             $arr_good['id'] = $i;
  50.             //наименование
  51.             preg_match('/<td class="main">[\s]+<h1[^>]+>([^<]+)</',$content,$match);
  52.             $arr_good['name'] = trim(htmlspecialchars($match[1],ENT_QUOTES));
  53.             //цена
  54.             if(preg_match('/<div class="main">[\s]+<strong>[^<]+<\/strong>([^<]+)<br>/',$content,$match)) {
  55.                 $price = $match[1];
  56.             } else {
  57.                 $price = 'нет цены';
  58.             }
  59.             $arr_good['price'] = $price;
  60.             //ссылка на товар
  61.             $arr_good['linkgoods'] = $link.$i;
  62.                    
  63.             //описание
  64.             preg_match('/<div style="padding-left: 20px;">([\w\W]+)(?=<\/div>[\s]+<\/td)/',$content,$match);
  65.             $arr_good['description'] = trim(htmlspecialchars(preg_replace('/<div[\w\W]+<\/div>/','',$match[1]),ENT_QUOTES));
  66.            
  67.             //изображение
  68.             $arr_images = array();
  69.             $image_link = "http://images.instore.kz/popup_image.php/pID/".$id;
  70.             $content = file_get_contents($image_link);
  71.                     //print $content;
  72.             if(preg_match('/<td align="center">[\s]*<img src="([^"]+)"/',$content,$match)) {
  73.                 $image_url = "http://images.instore.kz/".$match[1];
  74.                 $original_name = array_pop(explode('/',$match[1]));
  75.                 $image_ext = array_pop(explode('.',$match[1]));
  76.                 $save_image_name = $id.'_0_'.time().'.'.$image_ext;
  77.                 $save_path = "./images/".$save_image_name;
  78.                 file_put_contents($save_path,file_get_contents($image_url));
  79.                 $arr_images[] = array($original_name,$save_image_name);
  80.                 $q = 0;
  81.                 $match = false;
  82.                 //дополнительные картинки если есть
  83.                 do {
  84.                     if($match) {
  85.                         $image_url = "http://images.instore.kz/".$match[1];
  86.                         $original_name = array_pop(explode('/',$match[1]));
  87.                         $image_ext = array_pop(explode('.',$match[1]));
  88.                         $save_image_name = $id.'_'.($q).'_'.time().'.'.$image_ext;
  89.                         $save_path = "./images/".$save_image_name;
  90.                         file_put_contents($save_path,file_get_contents($image_url));
  91.                         $arr_images[] = array($original_name,$save_image_name);
  92.                     }
  93.                     $content = file_get_contents($image_link.'/invis/'.++$q);
  94.                 }    
  95.                 while(preg_match('/<td align="center">[\s]*<img src="([^"]+)"/',$content,$match));
  96.             }
  97.             mysql_query('INSERT INTO `goods` (`original_id`,`donnor`,`name`,`link`,`date`,`description`,`price`)
  98.                                VALUES("'.$arr_good['id'].'","1","'.$arr_good['name'].'","'.$arr_good['linkgoods'].'",NOW(),"'.$arr_good['description'].'","'.$arr_good['price'].'")') or die('Error add good');
  99.             $last_id = mysql_insert_id();
  100.             foreach($arr_images as $image) {
  101.                 mysql_query('INSERT INTO `images` (`name`,`original_name`,`good`)
  102.                                    VALUES("'.$image[1].'","'.$image[0].'","'.$last_id.'")') or die('Error add image');
  103.             }
  104.             print "<div style='color: green'>";
  105.             echo "Товар ".$id." успешно добавлен";
  106.             print " <strong>".date('H:i:s')."</strong>";
  107.             print "</div>";
  108.             flush();
  109.         }
  110.     }
  111.  


-----
Just do it
 
 Top
skk
Отправлено: 05 Марта, 2012 - 09:21:10
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




спасибо, пойду грызть курл
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB