<?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 могут быть отключены на сервере, чтобы остановить это?
Вышеприведенный код отлично работает на других сайтах.
Есть ли обходной путь?
Как я уже сказал, ваш пример отлично работает для меня … Но попробуйте этот способ, используя вместо этого 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