国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php實現采集中國天氣網未來7天天氣

Original 2017-02-18 11:22:05 489
abstract:這篇文章主要介紹了PHP實現采集中國天氣網未來7天天氣方法,本文詳細的講解了需求的實現,也可以做為學習PHP采集的入門教程,前言我們在寫一個Web程序的時候,總會想著把自己的網站更美觀一些,功能能更多一些,有時候寫一些小的工具或者加上小的插件會讓我們的站點更加完善。比如萬年歷功能,比如我們現在要講的天氣預報功能。當然我們沒法利用專業(yè)的衛(wèi)星接受數據,所以我們的天氣數據來自現有的天氣預報網站。利用天氣

這篇文章主要介紹了PHP實現采集中國天氣網未來7天天氣方法,本文詳細的講解了需求的實現,也可以做為學習PHP采集的入門教程,

前言

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

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

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

原理

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

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

實現

0.獲取天氣預報網頁的URL:

$url = "http://www.weather.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.weather.com.cn。

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

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

源代碼

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

"http://www.weather.com.cn/weather/101050101.shtml";
$t1 = time();    $page_content = file_get_contents($url);$t2 = time();
$start = 1;$end = 3;
if ($end > 7){    echo "超出預報能力范圍,請重新設置!";}else {    echo "未來".($end-$start)."天哈爾濱的天氣預報("              .date('Y-m-j')."發(fā)布)";
    eregi("--day $start--(.*)--day $end--", $page_content, $res);
    $forecast = str_replace("<img src=\"",        "<img src=\"http://www.weather.com.cn", $res[0]);    $t3 = time();
    echo $forecast;
    echo 'First step costs '.($t2 - $t1).' ms.';    echo 'Last step costs '.($t3 - $t2).' ms.';}

其他應用例子

同樣的思路可以嘗試的有:NBA每天的比分牌、今日哈工大的新聞同步、股市行情等等。都能實現同步實時更新。暫時只想到這些,歡迎大家拍磚~

更多關于php實現采集中國天氣網未來7天天氣請關注PHP中文網(www.miracleart.cn)其他文章!

Release Notes

Popular Entries