Simple html dom file_get_html not working - is there any workaround?

后端 未结 4 2001
独厮守ぢ
独厮守ぢ 2020-11-29 06:04


        
相关标签:
4条回答
  • 2020-11-29 06:40
    $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: misplaced THIS IS URL : http://www.annauniv.edu/cgi-bin/result/cgrade.pl?regno=11210104001

    0 讨论(0)
  • 2020-11-29 06:43

    You must set "allow_url_fopen" as TRUE in "php.ini" to allow accessing files via HTTP or FTP.
    Some hosting venders disable PHP's "allow_url_fopen" flag for security issues.

    0 讨论(0)
  • 2020-11-29 06:52

    As I said, your example is working fine for me... But try this way using curl instead:

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

    It gets all the links as expected:

    enter image description here

    And make sure you have php_openssl and php_curl installed...

    0 讨论(0)
  • 2020-11-29 06:53

    remove the semicolon from php.ini and restart Apache server to enable php module configuration

    ; Windows Extensions
    ...
    ;extension=php_openssl.dll
    ...
    
    0 讨论(0)
提交回复
热议问题