Простой html dom file_get_html не работает – есть ли какое-либо обходное решение?

<?php // Report all PHP errors (see changelog) error_reporting(E_ALL); include('inc/simple_html_dom.php'); //base url $base = 'https://play.google.com/store/apps'; //home page HTML $html_base = file_get_html( $base ); //get all category links foreach($html_base->find('a') as $element) { echo "<pre>"; print_r( $element->href ); echo "</pre>"; } $html_base->clear(); unset($html_base); ?> 

У меня есть код выше, и я пытаюсь получить определенные элементы на странице Play Store, но он ничего не возвращает. Возможно ли, что некоторые функции PHP могут быть отключены на сервере, чтобы остановить это?

Вышеприведенный код отлично работает на других сайтах.

Есть ли обходной путь?

Solutions Collecting From Web of "Простой html dom file_get_html не работает – есть ли какое-либо обходное решение?"

Как я уже сказал, ваш пример отлично работает для меня … Но попробуйте этот способ, используя вместо этого curl:

 //base url $base = 'https://play.google.com/store/apps'; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_URL, $base); curl_setopt($curl, CURLOPT_REFERER, $base); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $str = curl_exec($curl); curl_close($curl); // Create a DOM object $html_base = new simple_html_dom(); // Load HTML from a string $html_base->load($str); //get all category links foreach($html_base->find('a') as $element) { echo "<pre>"; print_r( $element->href ); echo "</pre>"; } $html_base->clear(); unset($html_base); 

Он получает все ссылки, как ожидалось:

введите описание изображения здесь

И убедитесь, что у вас установлены php_openssl и php_curl

удалите точку с запятой из php.ini и перезапустите сервер Apache, чтобы включить конфигурацию модуля php

 ; Windows Extensions ... ;extension=php_openssl.dll ... 

Вы должны установить «allow_url_fopen» как TRUE в «php.ini», чтобы разрешить доступ к файлам через HTTP или FTP.
Некоторые хостинг-провайдеры отключают флаг «allow_url_fopen» PHP для проблем безопасности.

 $post = curl_init(); curl_setopt($post, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($post, CURLOPT_AUTOREFERER, TRUE); curl_setopt($post, CURLOPT_HEADER, 0); curl_setopt($post,CURLOPT_RETURNTRANSFER, true); curl_setopt($post,CURLOPT_URL,$website); curl_setopt($post,CURLOPT_POST,1); curl_setopt($post,CURLOPT_POSTFIELDS,"regno=$Number"); curl_setopt($post, CURLOPT_FOLLOWLOCATION, True); curl_getinfo($post, CURLINFO_HTTP_CODE); $curlresponse = curl_exec($post); curl_close($post); $dom = new DOMDocument(); $dom->loadHTML($curlresponse); - $post = curl_init(); curl_setopt($post, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($post, CURLOPT_AUTOREFERER, TRUE); curl_setopt($post, CURLOPT_HEADER, 0); curl_setopt($post,CURLOPT_RETURNTRANSFER, true); curl_setopt($post,CURLOPT_URL,$website); curl_setopt($post,CURLOPT_POST,1); curl_setopt($post,CURLOPT_POSTFIELDS,"regno=$Number"); curl_setopt($post, CURLOPT_FOLLOWLOCATION, True); curl_getinfo($post, CURLINFO_HTTP_CODE); $curlresponse = curl_exec($post); curl_close($post); $dom = new DOMDocument(); $dom->loadHTML($curlresponse); 

DOMDocument :: loadHTML () [domdocument.loadhtml]: htmlParseStartTag: неуместно ЭТОТ URL: http://www.annauniv.edu/cgi-bin/result/cgrade.pl?regno=11210104001