Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2015, 17:11   #1
bong-bong
Новичок
Джуниор
 
Регистрация: 25.11.2015
Сообщений: 2
По умолчанию Проблема с simple html DOM

Всем привет! Прошу помощи, использую simple_html_dom.php:
Код:
<?
include "simple_html_dom.php";



$dnsdata = fopen("mts.txt", 'r') or die("не удалось открыть файл dns.txt");
while(!feof($dnsdata))
{
$url = fgets($dnsdata);
if ($url == '-')
{
$nm[0] = '-';
$ret[0] = '-';
}
else
{
$dns = file_get_html($url);
$ret = $dns->find('.price_g');
$nm = $dns->find('.price-item-title');
$csvdns = $csvdns.';'.$ret[0].';'.$nm[0];
echo $csvdns;

}


}
fclose($dnsdata);


?>
Появляется ошибка:
Warning: file_get_contents(http://shop.mts.ru/smartfony/samsung...00f-white.html ): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/srv109190/pr/simple_html_dom.php on line 76

Fatal error: Call to a member function find() on a non-object in /home/srv109190/pr/index.php on line 18

Файл mts.txt вида:
http://shop.mts.ru/smartfony/samsung...00f-white.html
http://shop.mts.ru/smartfony/samsung...00f-white.html
http://shop.mts.ru/smartfony/samsung...00f-white.html
http://shop.mts.ru/smartfony/samsung...00f-white.html

Если же вставляю урл без цикла(не из файла, а напрямую):
Код:
$dns = file_get_html('http://shop.mts.ru/smartfony/samsung/smartfon-galaxy-j1-lte-duos-sm-j100f-white.html');
$ret = $dns->find('.price_g');
$nm = $dns->find('.price-item-title');
$csvdns = $csvdns.';'.$ret[0].';'.$nm[0];
echo $csvdns;
То все работает. Уже голову сломал, прошу помочь разобраться с проблемой! Заранее спасибо!

Последний раз редактировалось Аватар; 25.11.2015 в 22:23.
bong-bong вне форума Ответить с цитированием
Старый 25.11.2015, 20:49   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от bong-bong Посмотреть сообщение
$dns = file_get_html('http://shop.mts.ru/smartfony/samsung/smartfon-galaxy-j1-lte-duos-sm-j100f-white.html');
$ret = $dns->find('.price_g');
$nm = $dns->find('.price-item-title');
$csvdns = $csvdns.';'.$ret[0].';'.$nm[0];
echo $csvdns;

То все работает.
А я в исходном коде указанной страницы не нахожу ни элементов с классом price_g, ни элементов с классом price-item-title.
Так что непонятно, как в этом случае указанный парсинг вообще может срабатывать.
Andkorol вне форума Ответить с цитированием
Старый 25.11.2015, 21:02   #3
bong-bong
Новичок
Джуниор
 
Регистрация: 25.11.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
А я в исходном коде указанной страницы не нахожу ни элементов с классом price_g, ни элементов с классом price-item-title.
Так что непонятно, как в этом случае указанный парсинг вообще может срабатывать.
Спасибо за ответ! Это пример элементов, дело в том что сама функция find не работает в данном случае, хотя если указать url в ручную в скрипте - она сработает и вернет пустой результат. Не могу разобраться, почему при указании урл в ручную функция работает, а если берет урл из файла - нет.
bong-bong вне форума Ответить с цитированием
Старый 25.11.2015, 21:17   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от bong-bong Посмотреть сообщение
Не могу разобраться, почему при указании урл в ручную функция работает, а если берет урл из файла - нет.
Возможно в URL, прочитанных из файла, присутствуют символы табуляции и|или перевода строки – и из-за этого не срабатывает парсер (некорректный URL).

Если причина именно в этом – решить можно парой способов:
– обработать каждый URL функцией trim
– получать URL построчно из файла более удобной функцией file, с указанием флага FILE_IGNORE_NEW_LINES
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить проблемы с PHP Simple HTML DOM Parser Max111222 PHP 1 15.02.2015 15:29
simple html dom проблема с получением контента smoky PHP 4 15.09.2013 16:43
Парсинг гугл-переводчика: simple HTML DOM и/или cURL? Artkuznya PHP 2 19.07.2013 12:54
HTML - DOM exn Работа с сетью в Delphi 1 17.02.2013 11:23
HTML DOM Лубышев Работа с сетью в Delphi 8 02.09.2011 00:06