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]   

> Описание: Сложный вопрос но всё же надежда что ответят живёт
AnteFil
Отправлено: 11 Июля, 2014 - 12:18:53
Post Id


Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Янв. 2014  


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




Есть 2 сайта стоит задача зайти на 1 сайт спарсить названия игр потом зайти на второй сайт спарсить название игр и потом выдать результат разницы. Тоесть те игры которых нет на 1 сайте. Вот код для простоты малость опишу что там происходит
PHP:
скопировать код в буфер обмена
  1.  
  2. // Ссылка на сайт
  3. $url = 'http://gametarget.ru/browser-strategy/';
  4. // Запускаем курл
  5. $ch = curl_init($url);
  6. curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
  7. curl_setopt($ch, CURLOPT_HEADER, 0);
  8. // Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');
  10.  
  11. // Получаем html
  12. $text = curl_exec($ch);
  13.  
  14. // Отключаемся
  15.  
  16. // Находим и сохраняем нужный фрагмент
  17. preg_match_all('#<h2 class="pos-title">(.*)</h2>#sU', $text, $out);
  18. // сохраняем в переменную $pervya
  19. $pervya = $out[1];
  20.  
  21. // Идём циклом по остальным страничкам в количестве 3-х штук
  22. $maxPages = 3;
  23. for ($i = 1; $i < $maxPages; $i++){
  24. $ch = curl_init($url . $i);
  25. curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
  26. curl_setopt($ch, CURLOPT_HEADER, 0);
  27. // Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
  28. curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');
  29.  
  30. // Получаем html
  31. $text = curl_exec($ch);
  32.  
  33. // Отключаемся
  34.  
  35. // Находим и сохраняем нужный фрагмент
  36. preg_match_all('#<h2 class="pos-title">(.*)</h2>#sU', $text, $out);
  37. // Записываем даныне в переменную
  38. $links[] = $out[1];
  39.  
  40. // Выводим результат на экран
  41. }
  42. // var_dump($pervya,$links);
  43. // // // // // // Заходим на наш второй сайт // // // // // // // // // // // /
  44. $url3 = 'http://esns.ru/category/games/browser-games/strategiya/';
  45. $ch3 = curl_init($url3);
  46. curl_setopt($ch3, CURLOPT_USERAGENT, 'IE20');
  47. curl_setopt($ch3, CURLOPT_HEADER, 0);
  48. // Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
  49. curl_setopt($ch3, CURLOPT_RETURNTRANSFER, '1');
  50.  
  51. // Получаем html
  52. $text3 = curl_exec($ch3);
  53.  
  54. // Отключаемся
  55. curl_close($ch3);
  56.  
  57. // Находим и сохраняем нужный фрагмент
  58. preg_match_all('#<h2 class="post-box-title">(.*)</h2>#sU', $text3, $out3);
  59. // записываем данные в переменную
  60. $pervya3 = $out3[1];
  61. // Идём циклом по другим стрницам
  62. $url4 = 'http://esns.ru/category/games/browser-games/strategiya/page/';
  63. $maxPages3 = 3;
  64. for ($i = 1; $i < $maxPages3; $i++){
  65. $ch3 = curl_init($url4 . $i . '/');
  66. curl_setopt($ch3, CURLOPT_USERAGENT, 'IE20');
  67. curl_setopt($ch3, CURLOPT_HEADER, 0);
  68. // Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
  69. curl_setopt($ch3, CURLOPT_RETURNTRANSFER, '1');
  70.  
  71. // Получаем html
  72. $text3 = curl_exec($ch3);
  73.  
  74. // Отключаемся
  75. curl_close($ch3);
  76.  
  77. // Находим и сохраняем нужный фрагмент
  78. preg_match_all('#<h2 class="post-box-title">(.*)</h2>#sU', $text3, $out3);
  79. $links3[] = $out3[1];
  80.  
  81. // Выводим результат на экран
  82. }
  83. // Сливаем два массива в один полученыне при парсинге первых страниц
  84. $result123 = array_merge($pervya, $pervya3);
  85. // Сливаем два массива в один полученыне при парсинге циклом
  86. $result = array_merge($links3, $links);
  87. // Пытаемся найти разницу
  88. $result5555 = array_diff($result, $result123);
  89.  
  90. print_r ($result5555);
  91.  
 
 Top
esterio
Отправлено: 11 Июля, 2014 - 13:24:51
Post Id



Активный участник


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


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




проблема в чем?
 
 Top
AnteFil
Отправлено: 11 Июля, 2014 - 13:44:42
Post Id


Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Янв. 2014  


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




esterio пишет:
проблема в чем?

Не получается вывести вот эту разницу нужно вывести только те игры которых нет на сайте номер 2
 
 Top
Panoptik
Отправлено: 11 Июля, 2014 - 14:18:11
Post Id



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


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


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




ну у вас в коде переменные названные так что не возможно понять что в них находится, поэтому сложно дать сразу решение

а оно примерно такое:
собрать все названия с сайта №1 в переменную с таким же названием
собрать все названия игр со второго сайта

и сделать array_diff двух вышеперечисленных списков.

не понятно что у вас там происходит и что не получается, но сложностей быть не должно

во всяком случае приведите данные полученные с двух источников, чтобы можно было понять что не так


-----
Just do it
 
 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