国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP數據采集程序采集天氣網數據實例演示

2024-05-04 21:48:02
字體:
來源:轉載
供稿:網友

前言:我們在寫一個Web程序的時候,總會想著把自己的網站更美觀一些,功能能更多一些,有時候寫一些小的工具或者加上小的插件會讓我們的站點更加完善,比如萬年歷功能,比如我們現在要講的天氣預報功能.

當然我們沒法利用專業的衛星接受數據,所以我們的天氣數據來自現有的天氣預報網站,利用天氣預報網站提供的數據服務,我們可以寫一個PHP爬蟲,然后動態采集我們所需要的數據,并且在目標站點更新數據的時候,我們的程序也能做到同步更新,自動地獲取數據.

下面就介紹一下如何編寫一個簡單的PHP數據采集程序(PHP爬蟲)。

原理:給定一個網頁的URL,使用PHP下載該網頁并得到網頁內容,然后通過正則表達式將其中我們感興趣的數據提取出來,然后輸出.

具體在這個例子中,我們要抓取的網頁是 http://www.天氣網com.cn/weather/101050101.shtml,我們感興趣的是頁面中的未來7天天氣情況.

實現:0.獲取天氣預報網頁的URL,代碼如下:

$url = "http://www.天氣網com.cn/weather/101050101.shtml";

$page_content = file_get_contents($url);

在這里,file_get_contents() 函數會將 $url 指向的網頁下載下來,并把網頁內容作為一個字符串返回,于是,$page_content 變量中就是我們要抓取的網頁的全部HTML代碼了,接下來,我們要從其中抽取我們需要的數據.

1.使用正則表達式匹配符合條件的字符串

先輸出 $page_content 的值,然后查看網頁源代碼,觀察可知我們需要的字符串可以在

<!--day 1 -->

......

<!--day 7 -->

這兩行的注釋里找到,使用正則表達式來取得 <!--day 1--> 和 <!--day 7--> 之間的所有內容,代碼如下:

eregi("<!--day 1-->(.*)<!--day 7-->",$page_content,$res);

2.補全頁面中圖片的路徑

由于遠程網頁中的圖片路徑都是像 /m2/i/icon_weather/29x20/d01.gif 這樣的相對路徑,我們需要把這些路徑補全,在它們前面加上 http://www.天氣網com.cn,代碼如下:

$forecast = str_replace("<img src="","<img src="http://www.天氣網com.cn",$res[0]);

至此,$forecast 中就是我們需要的天氣預報信息了,這個簡單的PHP爬蟲也就寫好了.

源代碼:以下是這個抓取天氣預報小程序的完整源代碼,其中添加了一些測量各部分程序運行時間的代碼,并可以通過設置 $start 和 $end 的值來控制抓取哪幾天的信息,代碼如下:

  1. $url = "http://www.天氣網com.cn/weather/101050101.shtml"
  2. $t1 = time(); 
  3.      
  4. $page_content = file_get_contents($url); 
  5. $t2 = time(); 
  6.  
  7. $start = 1; 
  8. $end = 3; 
  9.  
  10. if ($end > 7){ 
  11.     echo "超出預報能力范圍,請重新設置!"
  12. }else { 
  13.     echo "未來".($end-$start)."天哈爾濱的天氣預報(" 
  14.               .date('Y-m-j')."發布)"
  15.  
  16.     eregi("--day $start--(.*)--day $end--"$page_content$res); 
  17.  
  18.     $forecast = str_replace("<img src="", 
  19.         "<img src="http://www.天氣網com.cn", $res[0]); 
  20.     $t3 = time(); 
  21.  
  22.     echo $forecast
  23.  
  24.     echo 'First step costs '.($t2 - $t1).' ms.'
  25.     echo 'Last step costs '.($t3 - $t2).' ms.'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 聂拉木县| 噶尔县| 开平市| 桓仁| 应用必备| 旺苍县| 进贤县| 阜新市| 滦南县| 溆浦县| 同仁县| 五莲县| 上蔡县| 三亚市| 绵竹市| 龙州县| 淮阳县| 广德县| 夏津县| 锦州市| 翁源县| 抚顺市| 余庆县| 铜陵市| 乡城县| 萨迦县| 鄄城县| 上饶市| 伊川县| 磐安县| 巴南区| 瓮安县| 寿宁县| 新巴尔虎左旗| 永昌县| 桑日县| 漳浦县| 平利县| 阿尔山市| 通城县| 华池县|