日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > php file_get_contents數(shù)據(jù)采集與常用見問題解決

php file_get_contents數(shù)據(jù)采集與常用見問題解決

來源:程序員人生   發(fā)布時(shí)間:2013-11-07 12:33:37 閱讀次數(shù):4777次

在批量的數(shù)據(jù)采集在php中很少會(huì)使用file_get_contents函數(shù)來操作,但是如果是小量的我們可以使用file_get_contents函數(shù)操作,因?yàn)樗坏糜枚液?jiǎn)單易學(xué),下面我來介紹file_get_contents用法與使用過程中的問題解決辦法。

先來看問題,file_get_contents不能獲取帶端口的網(wǎng)址,例如如下代碼:

file_get_contents('http://localhost:12345');

沒有任何獲取,解決方法是:關(guān)閉selinux

1 永久方法 – 需要重啟服務(wù)器

修改/etc/selinux/config文件中設(shè)置SELINUX=disabled ,然后重啟服務(wù)器。

2 臨時(shí)方法 – 設(shè)置系統(tǒng)參數(shù)

使用命令setenforce 0附:

setenforce 1 設(shè)置SELinux 成為enforcing模式

setenforce 0 設(shè)置SELinux 成為permissive模式

file_get_contents超時(shí),代碼如下:

  1. function _file_get_contents($url
  2.   $context = stream_context_create(array
  3.      'http' => array
  4.       'timeout' => 180 //超時(shí)時(shí)間,單位為秒 
  5.      )  
  6.   ));   
  7.   return @file_get_contents($url, 0, $context); 

好了上面的問題得到解決之后我們可以開始采集了,代碼如下:

  1. <?php  
  2. //全國(guó),判斷條件是$REQUEST_URI是否含有html  
  3. if (!strpos($_SERVER["REQUEST_URI"],".html"))  
  4. {  
  5. $page="http://qq.ip138.com/weather/";  
  6. $html = file_get_contents($page,'r');  
  7. $pattern="/<B>全國(guó)主要城市、縣當(dāng)天和未來五天天氣趨勢(shì)預(yù)報(bào)在線查詢</B>(.*?)<center style="padding:3px">/si";  
  8. //正則匹配之間的html  
  9. preg_match($pattern,$html,$pg);  
  10. echo "";  
  11. //正則替換遠(yuǎn)程地址為本地地址  
  12. $p=preg_replace('//weather/(w+)/index.htm/''tq.php/$1.html'$pg[1]);  
  13. echo $p;  
  14. }  
  15. //省,判斷條件是$REQUEST_URI是否含有?  
  16. else if(!strpos($_SERVER["REQUEST_URI"],"?")){  
  17. //yoyo推薦的使用分割獲得數(shù)據(jù),這里是獲得省份名稱  
  18. $province=explode("/",$_SERVER["REQUEST_URI"]);  
  19. $province=explode(".",$province[count($province)-1]);  
  20. $province=$province[0];  
  21. //被注釋掉的是我自己寫出來的正則,感覺寫的不好,但效果等同上面  
  22. //preg_match('/[^/]+[.(html)]$/',$_SERVER["REQUEST_URI"],$pro);  
  23. //$province=preg_replace('/.html/','',$pro[0]);  
  24. $page="http://qq.ip138.com/weather/".$province."/index.htm";  
  25. //獲取html數(shù)據(jù)之前先嘗試打開頁(yè)面,防止惡意輸入地址導(dǎo)致出錯(cuò)  
  26. if (!@fopen($page"r")) {  
  27. die("對(duì)不起,該地址不存在!<a href=javascript:history.back(1)>點(diǎn)擊這里返回</a>");  
  28. exit(0);  
  29. }  
  30. $html = file_get_contents($page,'r');  
  31. $pattern="/五天天氣趨勢(shì)預(yù)報(bào)</B>(.*?)請(qǐng)輸入輸入市/si";  
  32. preg_match($pattern,$html,$pg);  
  33. echo "";  
  34. //正則替換,獲取省份,城市  
  35. $p=preg_replace('//weather/(w+)/(w+).htm/''$2.html?pro=$1'$pg[1]);  
  36. echo $p;  
  37. }  
  38. else {  
  39. //市,通過get傳遞省份  
  40. $pro=$_REQUEST['pro'];  
  41. $city=explode("/",$_SERVER["REQUEST_URI"]);  
  42. $city=explode(".",$city[count($city)-1]);  
  43. $city=$city[0];  
  44. //preg_match('/[^/]+[.(html)]+[?]/',$_SERVER["REQUEST_URI"],$cit);  
  45. //$city=preg_replace('/.html?/','',$cit[0]);  
  46. $page="http://qq.ip138.com/weather/".$pro."/".$city.".htm";  
  47. if (!@fopen($page"r")) {  
  48. die("對(duì)不起,該地址不存在!<a href=javascript:history.back(1)>點(diǎn)擊這里返回</a>");  
  49. exit(0);  
  50. }  
  51. $html = file_get_contents($page,'r');  
  52. $pattern="/五天天氣趨勢(shì)預(yù)報(bào)</B>(.*?)請(qǐng)輸入輸入市/si";  
  53. preg_match($pattern,$html,$pg);  
  54. echo "";  
  55. //獲取真實(shí)的圖片地址  
  56. $p=preg_replace('//image//''http://qq.ip138.com/image/'$pg[1]);  
  57. echo $p;  
  58. }  
  59. ?> 

如果上面辦法無法采集到數(shù)據(jù)我們可以使用以下代碼來處理,代碼如下:

  1. <?php  
  2. $url = "http://www.phpfensi.com";  
  3. $ch = curl_init();  
  4. $timeout = 5;  
  5. curl_setopt($ch, CURLOPT_URL, $url);  
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  7. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
  8. //在需要用戶檢測(cè)的網(wǎng)頁(yè)里需要增加下面兩行  
  9. //curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);  
  10. //curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);  
  11. $contents = curl_exec($ch);  
  12. curl_close($ch);  
  13. echo $contents;  
  14. ?> 
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 麻豆成人av | 天天综合网天天综合色 | 国产精品久久综合 | 九九热在线视频观看这里只有精品 | 99久久毛片免费观看 | 国产精品成人国产乱一区 | 欧美一区二区三区成人 | a在线资源 | 欧美2区| 亚洲精品二区 | 成人午夜精品一区二区三区 | 国产一区久久 | 午夜免费一区二区 | 日韩精品91 | jizz18欧美| 国产成人综合网 | 久久av红桃一区二区小说 | 日韩精品一二三 | 成人性生交大片免费看中文 | 国产精品免费一区二区 | 午夜久久av | 国产一区二区三区视频在线 | 亚洲成人福利在线 | 午夜激情久久久 | 三区四区在线 | 99久久精品国产一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 91官网在线观看 | 亚洲视频大全 | 国产一区二区免费在线 | 欧美一区二区视频在线观看 | 欧美日韩免费在线观看 | 麻豆视频一区二区 | 叶山小百合av一区二区 | 天天综合一区 | 精品999久久久 | 欧美成人免费网站 | 在线看的av网站 | 精品一区二区三区免费毛片爱 | 欧美精品一区二区三区视频 | 夜夜穞天天穞狠狠穞 |