多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > php file_get_contents數據采集與常用見問題解決

php file_get_contents數據采集與常用見問題解決

來源:程序員人生   發布時間:2013-11-07 12:33:37 閱讀次數:4768次

在批量的數據采集在php中很少會使用file_get_contents函數來操作,但是如果是小量的我們可以使用file_get_contents函數操作,因為它不但好用而且簡單易學,下面我來介紹file_get_contents用法與使用過程中的問題解決辦法。

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

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

沒有任何獲取,解決方法是:關閉selinux

1 永久方法 – 需要重啟服務器

修改/etc/selinux/config文件中設置SELINUX=disabled ,然后重啟服務器。

2 臨時方法 – 設置系統參數

使用命令setenforce 0附:

setenforce 1 設置SELinux 成為enforcing模式

setenforce 0 設置SELinux 成為permissive模式

file_get_contents超時,代碼如下:

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

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

  1. <?php  
  2. //全國,判斷條件是$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>全國主要城市、縣當天和未來五天天氣趨勢預報在線查詢</B>(.*?)<center style="padding:3px">/si";  
  8. //正則匹配之間的html  
  9. preg_match($pattern,$html,$pg);  
  10. echo "";  
  11. //正則替換遠程地址為本地地址  
  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推薦的使用分割獲得數據,這里是獲得省份名稱  
  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數據之前先嘗試打開頁面,防止惡意輸入地址導致出錯  
  26. if (!@fopen($page"r")) {  
  27. die("對不起,該地址不存在!<a href=javascript:history.back(1)>點擊這里返回</a>");  
  28. exit(0);  
  29. }  
  30. $html = file_get_contents($page,'r');  
  31. $pattern="/五天天氣趨勢預報</B>(.*?)請輸入輸入市/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("對不起,該地址不存在!<a href=javascript:history.back(1)>點擊這里返回</a>");  
  49. exit(0);  
  50. }  
  51. $html = file_get_contents($page,'r');  
  52. $pattern="/五天天氣趨勢預報</B>(.*?)請輸入輸入市/si";  
  53. preg_match($pattern,$html,$pg);  
  54. echo "";  
  55. //獲取真實的圖片地址  
  56. $p=preg_replace('//image//''http://qq.ip138.com/image/'$pg[1]);  
  57. echo $p;  
  58. }  
  59. ?> 

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

  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. //在需要用戶檢測的網頁里需要增加下面兩行  
  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. ?> 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本三级s级在线播放 | 九色地址 | xxx视频在线观看免费 | 国产一区二区三区在线免费 | 国产精品2 | 欧美xxxhd| 国产精品久久久久三级 | 国产高清精品入口91 | 国产极品嫩模在线观看91精品 | 久久久久欧美精品 | 国产成人久久精品推最新 | xxx亚洲日本| 亚洲人成图片欧美人成图片 | 久久综合亚洲一区二区三区 | 色吊丝二区三区中文字幕 | 蜜中蜜3动漫无修在线播放 免费 黄 色 人成 视频 | 中国jizz18免费 | 性生生活三级视频在线观看 | 国产一级淫片a免费播放口之 | 欧美videos在线观看 | 亚洲国产网站 | 黄色www| 久久国产亚洲欧美日韩精品 | 高清一级片 | 91日本在线观看亚洲精品 | 永久免费毛片在线播放 | 性欧美久久 | 久久99精品久久久久久野外 | 国内精品久久久久久久999下 | 波多野结衣中文一区二区免费 | 免费麻豆国产一区二区三区四区 | 在线jlzzjlzz免费播放 | 成人欧美视频在线观看播放 | 欧美人与动性xxxxx杂性 | freexx性日本| 亚洲视频 欧美视频 | 国产精品国产国产aⅴ | 最新亚洲精品 | 亚欧人成精品免费观看 | 精品91 | 国产午夜精品久久久久免费视 |