Простой html-файл dom, чтобы 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 могут быть отключены на сервере, чтобы остановить это?
Приведенный выше код отлично работает на других сайтах.
Есть ли какой-либо обходной путь?
4 answers
Как я уже сказал, ваш пример отлично работает для меня... Но попробуйте сделать это, используя вместо этого 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.
Некоторые поставщики хостинга отключают флаг PHP "allow_url_fopen" для проблем безопасности.
$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