2013-09-06 29 views
5
<?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); 

?> 

Mam powyższy kod i próbuję uzyskać pewne elementy ze strony Sklep Play, ale nie zwracam niczego. Czy jest możliwe, że niektóre funkcje PHP mogą być wyłączone na serwerze, aby to zatrzymać?Proste html dom file_get_html nie działa - czy jest jakieś obejście?

Powyższy kod działa doskonale na innych stronach.

Czy istnieje sposób obejścia tego problemu?

+0

działa dobrze dla mnie tho ... – Enissay

Odpowiedz

26

Jak powiedziałem, Twój przykład działa dobrze dla mnie ... Ale spróbuj w ten sposób za pomocą curl zamiast:

//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); 

Robi wszystkie linki zgodnie z oczekiwaniami:

enter image description here

Upewnij się, że masz zainstalowane php_openssl i php_curl ...

+1

wow dziękuję, jak pan powiedział, ja po prostu potrzebne, aby uaktywnić " php_openssl "i działa teraz :) Używam WAMP Server w systemie Windows i domyślnie jest on nieaktywny. Dzięki! –

1
$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: niesłuszna TO URL: http://www.annauniv.edu/cgi-bin/result/cgrade.pl?regno=11210104001

2

Musisz ustawić "allow_url_fopen" jako TRUE w "php.ini", aby umożliwić dostęp do plików za pośrednictwem protokołu HTTP lub FTP.
Niektórzy dostawcy hostingu wyłączają flagę "allow_url_fopen" w PHP z powodu problemów z bezpieczeństwem.

3

usunąć średnik z php.ini i zrestartować serwer Apache w celu umożliwienia konfiguracji modułu PHP

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