phpcms無法采集怎么辦?
無法采集https的網站內容主要是https不支持file_get_contents獲取內容,所以可以考慮采用curl的方式獲取。(需要開啟curl,可以在pathinfo里邊查看)
(1)打開phpcmsmodulescollectionclassescollection.class.php
在類里邊添加新函數:
protected?static?function?curl_request($url){??? ????????if?(!function_exists('curl_init'))?{??? ????????????throw?new?Exception('server?not?install?curl');??? ????????}??? ????????$ch?=?curl_init();? ????????curl_setopt($ch,?CURLOPT_URL,$url);? ????????curl_setopt($ch,?CURLOPT_HEADER,0);? ????????curl_setopt($ch,?CURLOPT_RETURNTRANSFER,1);//禁止調用時就輸出獲取到的數據? ????????curl_setopt($ch,?CURLOPT_FOLLOWLOCATION,1);? ????????curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,false);? ????????curl_setopt($ch,?CURLOPT_SSL_VERIFYHOST,false);? ????????$result?=?curl_exec($ch);? ????????curl_close($ch);? ????????return?$result;? ????}
(2)找到函數function get_htm把該函數
立即學習“PHP免費學習筆記(深入)”;
protected?static?function?get_html($url,?&$config)?{? ????????if?(!empty($url)?&&?$html?=?@file_get_contents($url))?{? ????????????if?($syscharset?!=?$config['sourcecharset']?&&?$config['sourcetype']?!=?4)?{? ????????????????$html?=?iconv($config['sourcecharset'],?CHARSET.'//TRANSLIT//IGNORE',?$html);? ????????????}? ????????????return?$html;? ????????}?else?{? ????????????return?false;? ????????}? ????}
改成
protected?static?function?get_html($url,?&$config)?{? ????????if(substr(trim($url),0,?5)?==?"https"){ ??????????$html?=?@self::curl_request($url); ??????}else{ ?????????$html?=?@file_get_contents($url); ???????} ????????if?(!empty($url)?&&?$html)?{? ????????????if?($syscharset?!=?$config['sourcecharset']?&&?$config['sourcetype']?!=?4)?{? ????????????????$html?=?iconv($config['sourcecharset'],?CHARSET.'//TRANSLIT//IGNORE',?$html);? ????????????}? ????????????return?$html;? ????????}?else?{? ????????????return?false;? ????????}? ????}
然后保存即可獲取,測試結果
不知道是否還有其他bug,歡迎留言反饋!
PHP中文網,大量的免費PHPCMS教程,歡迎在線學習!
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦