Простая библиотека HTML DOM

Включая простую библиотеку HTML DOM, я получаю предупреждения:

Предупреждение: file_get_contents () [function.file-get-contents]: php_network_getaddresses: getaddrinfo не удалось: такой хост не известен. в C: \ xampp \ htdocs \ simple_html_dom.php в строке 70

Предупреждение: file_get_contents (http://www.google.com/) [function.file-get-contents]: не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: такой хост не известен. в C: \ xampp \ htdocs \ simple_html_dom.php в строке 70

Строка 70 в файле simple_html_dom.php (загруженном с http://sourceforge.net/projects/simplehtmldom/files/latest/download) - это

  $contents = file_get_contents($url, $use_include_path, $context, $offset);

Также 1 ошибка:

Неустранимая ошибка: вызов функции-члена find () для не-объекта в C: \ xampp \ htdocs \ domdoc2.php в строке 15

где строка 15 кода (ниже)

foreach($html->find('img') as $element) 

Веб-страница, на которую я ссылался в приведенном ниже коде, - это google.com. Код:

     <?php

include('simple_html_dom.php');
$html = new simple_html_dom();  
$html = file_get_html('http://www.google.com/');
// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';

// Find all links 
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';
?>

Что я делаю неправильно??


person saur    schedule 22.06.2012    source источник
comment
Это не проблема библиотеки, PHP просто не может разрешить хост по IP-адресу.   -  person Ja͢ck    schedule 22.06.2012
comment
@Baszz Какой файл вы имеете в виду? Файл DOM есть, и он тоже включен   -  person saur    schedule 22.06.2012
comment
@ user1458514 загляните в настройки прокси-сервера Internet Explorer   -  person Ja͢ck    schedule 22.06.2012


Ответы (2)


Это связано с тем, что ваш хост не смог разрешить DNS, это происходит, когда simplehtmldom использует file_get_contents вместо curl. PHP Simple HTML DOM Parser - отличный класс PHP для синтаксического анализа HTML, НО он медленный, поскольку использует file_get_contents (который отключен почти во всех конфигурациях) вместо cURL (в 4-5 раз быстрее и с большим количеством опций, он есть почти на каждом сервере) .

Заменяется только file_get_contents, поэтому вы можете безопасно перезаписать предыдущую версию, и все будет работать как раньше, только быстрее

Ссылка на исходный код: http://webarto.com/static/download/simple_html_dom.rar

//output should be

/intl/en_ALL/images/srpr/logo1w.png
http://www.google.com/webhp?hl=en&tab=ww
http://www.google.com/imghp?hl=en&tab=wi
http://maps.google.com/maps?hl=en&tab=wl
https://play.google.com/?hl=en&tab=w8
http://www.youtube.com/?tab=w1
http://news.google.com/nwshp?hl=en&tab=wn
https://mail.google.com/mail/?tab=wm
https://docs.google.com/?tab=wo
http://www.google.com/intl/en/options/
https://www.google.com/calendar?tab=wc
http://translate.google.com/?hl=en&tab=wT
http://www.google.com/mobile/?tab=wD
http://books.google.com/bkshp?hl=en&tab=wp
https://www.google.com/offers/home?utm_source=xsell&utm_medium=products&utm_campaign=sandbar&tab=wG#!details
https://wallet.google.com/manage/?tab=wa
http://www.google.com/shopping?hl=en&tab=wf
http://www.blogger.com/?tab=wj
http://www.google.com/reader/?hl=en&tab=wy
http://www.google.com/finance?tab=we
http://picasaweb.google.com/home?hl=en&tab=wq
http://video.google.com/?hl=en&tab=wv
http://www.google.com/intl/en/options/
https://accounts.google.com/ServiceLogin?hl=en&continue=http://www.google.com/
http://www.google.com/preferences?hl=en
/preferences?hl=en
/url?sa=p&pref=ig&pval=3&q=http://www.google.com/ig%3Fhl%3Den%26source%3Diglk&usg=AFQjCNFA18XPfgb7dKnXfKz7x7g1GDH1tg
http://www.google.com/history/optout?hl=en
/advanced_search?hl=en
/language_tools?hl=en
/intl/en/ads/
/services/
https://plus.google.com/116899029375914044550
/intl/en/about.html
/intl/en/policies/

Однако, если вы совершенно не знакомы с синтаксическим анализом HTML в PHP, пожалуйста, прочтите: Как вы анализируете и обрабатываете HTML / XML в PHP?

person Eswar Rajesh Pinapala    schedule 22.06.2012
comment
Спасибо за это ... ну, это может показаться слишком дилетантским, но не могли бы вы сказать, каким должен быть результат ... У меня пустой экран ... - person saur; 22.06.2012
comment
Он должен распечатать все ссылки (a- ›href) и изображения (img-› src), как вы просили в скрипте. Я попробовал тот же самый скрипт, и я обновил ответ с выводом. - person Eswar Rajesh Pinapala; 22.06.2012
comment
U может видеть пустой экран, потому что на вашем компьютере не включен curl. Включить завиток. Если вы не знаете, как это сделать, дайте мне знать вашу операционную систему. - person Eswar Rajesh Pinapala; 22.06.2012
comment
откройте файл php.ini ... найдите curlxx.dll и удалите; Перед именем файла сохраните файл php.ini. перезапустите apache. вы используете xampp или wampp? - person Eswar Rajesh Pinapala; 22.06.2012
comment
следуйте этому: tildemark.com/programming / php / перезапустите apache и перезапустите скрипт - person Eswar Rajesh Pinapala; 22.06.2012
comment
@EswarRajeshPinapala Я пытался получить этот скрипт stackoverflow.com/questions/10035954/, но столкнулся с той же ошибкой, что и сообщение на этой странице. Я пробовал ваше решение, но оно все равно не работает. Можно было бы подкинуть немного инсайта? - person aVC; 28.10.2012

Это никак не связано с simple_html_dom. У вашего сервера нет доступа к Интернету, и он не может разрешить google.com. Проверьте настройки DNS и, возможно, брандмауэр.

person Tom van der Woerdt    schedule 22.06.2012
comment
У сервера есть доступ в Интернет, но сообщение об ошибке все еще появляется .. Есть подсказка? - person saur; 22.06.2012
comment
Это связано с тем, что ваш хост не смог разрешить DNS, это происходит, когда simplehtmldom использует file_get_contents вместо curl. - person Eswar Rajesh Pinapala; 22.06.2012