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 :: Проблемы с библиотекой simple_html_dom

 PHP.SU

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


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

> Без описания
razorg1991
Отправлено: 14 Июля, 2014 - 13:37:27
Post Id


Частый гость


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


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




Пишу парсер на simple_html_dom, код такой:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         require_once('simple_html_dom.php');
  4.     $html = new simple_html_dom();
  5.     $html->load_file("data/link_parse.txt");
  6.     $urls = explode("|", $html);
  7.     foreach($urls as $url) {
  8.         $html->load_file($url);
  9.         echo $html->find("div#big_product div#product-title h1", 0)."<br>";
  10.         echo $html->find("div#product-parameters", 0)."<br>";
  11.         echo $html->find("div#description-wrap div.righter div#product-price", 0)."<br>";
  12.     }
  13.     $html->clear();
  14.     unset($html);
  15. ?>
  16.  


Все работает, НО выбивают ошибки Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in W:\home\localhost\www\batparser\simple_html_dom.php on line 1081

Fatal error: Call to a member function find() on a non-object in W:\home\localhost\www\batparser\simple_html_dom.php on line 1113

Но прикол весь в том, что если грузить данные не из файла

PHP:
скопировать код в буфер обмена
  1.  
  2. $html->load_file("data/link_parse.txt");
  3.  


а к примеру из массива

PHP:
скопировать код в буфер обмена
  1.  
  2. $links = array(
  3.                     'http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii.html',
  4.                     'http://bat.com.ua/auto-systems/odnostoronnie-signalizacii.html'
  5.                     );
  6. $html->load_file($links);
  7.  


То все работает без ошибок! КАК ТАК? Не понял
ЧТО ЕМУ НЕ НРАВИТЬСЯ

(Отредактировано автором: 14 Июля, 2014 - 13:39:28)

 
 Top
Viper
Отправлено: 14 Июля, 2014 - 16:36:50
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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






Что показывает?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
razorg1991
Отправлено: 14 Июля, 2014 - 17:18:13
Post Id


Частый гость


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


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




Viper пишет:

Что показывает?


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/steelmate-signalizacija.html
  4.     [1] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-5025.html
  5.     [2] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-5024.html
  6.     [3] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/eaglemaster-signalizacija.html
  7.     [4] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija.html
  8.     [5] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4604.html
  9.     [6] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4606.html
  10.     [7] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4603.html
  11.     [8] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4605.html
  12.     [9] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4890.html
  13.     [10] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4607.html
  14.     [11] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/convoy-signalizacija-4602.html
  15.     [12] => http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii/segura-signalizacija.html
  16.     [13] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-5018.html
  17.     [14] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-4611.html
  18.     [15] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-4801.html
  19.     [16] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-4927.html
  20.     [17] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-4609.html
  21.     [18] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-4612.html
  22.     [19] => http://bat.com.ua/auto-systems/odnostoronnie-signalizacii/convoy-signalizacija-4610.html
  23.     [20] =>
  24. )
  25.  


Хм... странно, а почему последний элемент пустой? Собственно первая ошибка из-за него.
А кажется понял почему пустой Радость В файле с которого он читает после последней ссылки стоит разделитель "|" (потому как файл тоже формируется через скрипт), а значит explode считает последний элемент массива пустым Ха-ха
Так получается, что и вторая ошибка тоже из-за этого Закатив глазки Ведь объекта, то из пустого элемента массива он же не создаст )))
Собственно скрипт который формирует файл:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         require_once('simple_html_dom.php');
  4.     $html = new simple_html_dom();
  5.     $links = array(
  6.                     'http://bat.com.ua/auto-systems/dvuhstoronnie-signalizacii.html',
  7.                     'http://bat.com.ua/auto-systems/odnostoronnie-signalizacii.html'
  8.                     );
  9.     $fp = fopen("data/link_parse.txt", "w+");
  10.     foreach($links as $link) {
  11.         $html->load_file($link);
  12.         $products_link = $html->find('div.product div.product-name a');
  13.         foreach($products_link as $product_link) {
  14.             $text = $product_link->href.'|';
  15.             echo $text."<br>";
  16.             fwrite($fp,$text);
  17.         }
  18.     }
  19.     fclose($fp);
  20.     $html->clear();
  21.     unset($html);
  22. ?>
  23.  


Добавил проверку в исходный скрипт

PHP:
скопировать код в буфер обмена
  1.  
  2. require_once('simple_html_dom.php');
  3.     $html = new simple_html_dom();
  4.     $html->load_file("data/link_parse.txt");
  5.     $urls = explode("|", $html);
  6.     echo '<pre>';
  7.     print_r($urls);
  8.     echo '</pre>';
  9.     foreach($urls as $url) {
  10.         if($url != "") {
  11.         $html->load_file($url);
  12.         echo $html->find("div#big_product div#product-title h1", 0)."<br>";
  13.         echo $html->find("div#product-parameters", 0)."<br>";
  14.         echo $html->find("div#description-wrap div.righter div#product-price", 0)."<br>";
  15.         }
  16.         else {unset($url);}
  17.     }
  18.     $html->clear();
  19.     unset($html);
  20.  


Ошибки исчезли Радость
СПАСИБО ОГРОМНОЕ ЗА ПОМОЩЬ )))

(Отредактировано автором: 14 Июля, 2014 - 17:29:39)

 
 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