首頁 php教程 PHP源码 抓取最近八天天气(非利用接口,直接从网站提取)

抓取最近八天天气(非利用接口,直接从网站提取)

Jun 01, 2016 pm 02:33 PM
天氣 抓取

php代码

<?php
   /*
    *特别注意,第一天没有最高气温数据,第八天没有最低气温数据
    *注意对数字进行过滤时不要忘记对负号进行判断
    *对风力过滤时要考虑到3-5级这种格式
    */
   class weatherfetch{
       private $f;
       function getNum($string) {
           $tmpstr = &#39;&#39;;
           $strlen = strlen($string);
           for($i=0; $i<$strlen; $i++) {
                $str=substr($string, $i, 1);
                $str1=trim($str);
                if(is_numeric($str1)){
                    $tmpstr.=$str1+0;
  
                }
                if($str1=="-"&&is_numeric(substr($string, $i-1, 1))){
                $tmpstr.= $str1;
            }
  
            }
           return $tmpstr;
        }
        function __construct(){
          $this->f= new SaeFetchurl();
  
        }
        function getChineseNum($string){
           $tmpstr = &#39;&#39;;
           $arr = array(1,2,3,4,5,6,7,8,9,0);
          $strlen = strlen($string);
          for($i=0; $i<$strlen; $i++) {      
  
           $str=substr($string, $i, 1);
  
           $str1=trim($str);
           if( ord($str)>0xA0 ){
  
            $tmpstr.= substr($string, $i, 3);
  
            $i = $i+2;
  
           }
  
            if(is_numeric($str1)){
  
                $tmpstr.= $str1;
  
            }
            if($str1=="-"&&is_numeric(substr($string, $i-1, 1))&&is_numeric(substr($string, $i+1, 1))){
                $tmpstr.= $str1;
            }
  
          }
  
                return $tmpstr;
  
        }
        function getChinese($string,$encode="GBK") {
               switch($encode){
                    case "GBK" :$codelength=2;break;
               case "GB2312" :$codelength=3;break;
               case "UTF-8" :$codelength=3;break;
                   case "UTF-16" :$codelength=4;break;
  
               }
               $tmpstr = &#39;&#39;;
               $arr = array(1,2,3,4,5,6,7,8,9,0);
               $strlen = strlen($string);
               for($i=0; $i<$strlen; $i++) {
                    $str=substr($string, $i, 1);
                    $str1=trim($str);
                    if( ord($str)>0xA0 ){
                    $tmpstr.= substr($string, $i, $codelength);
                    $i = $i+$codelength-1;
                    }
  
                }
            return $tmpstr;
        }
       function get($cityid){
           $url="http://www.weather.com.cn/weather/".$cityid.".shtml";
           $data=$this->f->fetch($url);
  
           $sun=explode(&#39;<div class="weatherTopright">&#39;,$data);
           $sun=explode("<dl>",$sun[1]);
           $sun=explode("</dl>",$sun[1]);
           $sun=explode("</strong>",$sun[0]);
           $sunrise=strlen($sun[0]);
           $sunrise=substr($sun[0],$sunrise-5);//日出时间
           $sunset=strlen($sun[1]);
           $sunset=substr($sun[1],$sunset-5);//日落时间
           $sunhour=substr($sunset,0,2)-substr($sunrise,0,2);
           $sunminute=$sunhour*60+substr($sunset,-2)-substr($sunrise,-2);//日照时间
           $yubao=explode(&#39;class="yuBaoTable"&#39;,$data);
           $num=count($yubao);
           $tl=array();
           $th=array();
           $fx=array();
           $fl=array();
           $weather=array();
           //第一天
           $tr=explode("</tr>",$yubao[1]);
           $td=explode("</td>",$tr[0]);
           $weather[]=$this->getChinese($td[3],"UTF-8");//晚上天气
           $fx[]=$this->getChinese($td[5],"UTF-8");//晚上风向
           $fl[]=substr($this->getChineseNum($td[6],"UTF-8"),5);//晚上风力
           $tltemp=explode("<strong>",$td[4]);//最低气温
           $tl[]=$this->getNum($tltemp[1]);
           //从第二天到第七天
           for($i=2;$i<$num-1;$i++){
               $tr=explode("</tr>",$yubao[$i]);
               $td=explode("</td>",$tr[0]);
               $weather[]=$this->getChinese($td[3],"UTF-8");//白天天气
               $fx[]=$this->getChinese($td[5],"UTF-8");//白天风向
               $fltemp=substr($this->getChineseNum($td[6],"UTF-8"),5);
               $fl[]=$fltemp;//白天风力
               $thtemp=explode("<strong>",$td[4]);
               $th[]=$this->getNum($thtemp[1]);//最高气温
               $td=explode("</td>",$tr[1]);
               $tltemp=explode("<strong>",$td[3]);
               $tl[]=$this->getNum($tltemp[1]);//最低气温
  
            }
            //第八天
            $tr=explode("</tr>",$yubao[$num-1]);
            $td=explode("</td>",$tr[0]);
            $weather[]=$this->getChinese($td[3],"UTF-8");//白天天气
            $fx[]=$this->getChinese($td[5],"UTF-8");//白天风向
            $fl[]=substr($this->getChineseNum($td[6],"UTF-8"),5);//白天风力
            $thtemp=explode("<strong>",$td[4]);
            $th[]=$this->getNum($thtemp[1]);//最高气温
            if(count($weather)==8){
                return array("weather"=>$weather,"tl"=>$tl,"th"=>$th,"fx"=>$fx,"fl"=>$fl,"sunset"=>$sunset,"sunrise"=>$sunrise,"sunminute"=>$sunminute);
            }else{
              return 1;
  
            }
        }
        function getday1($cityid){
             $url="http://www.weather.com.cn/weather/".$cityid.".shtml";
             $data=$this->f->fetch($url);
             $yubao=explode(&#39;class="yuBaoTable"&#39;,$data);
             $tr=explode("</tr>",$yubao[1]);
             $td=explode("</td>",$tr[0]);
             $thtemp=explode("<strong>",$td[4]);
             return $this->getNum($thtemp[1]);
  
        }
    }
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如果 Windows 11 的天氣小工具未在工作列中顯示,則進行 7 次修復 如果 Windows 11 的天氣小工具未在工作列中顯示,則進行 7 次修復 Apr 16, 2023 pm 12:13 PM

Windows11去掉了NewsandInterests部分,取而代之的是Widgets,您可以透過設定開啟或關閉它。天氣應用程式附帶小部件,該應用程式顯示您想要的有關天氣的所有詳細資訊和資訊。為此,您必須單擊並打開應用程式進行查看。有些使用者在嘗試在工作列中顯示天氣時會遇到困難。有些人最終放棄了該功能,因為他們無法解決這個問題。許多人報告說Windows11上缺少任務欄圖標,但這很容易修復。有關天氣小部件的更多信息,請務必繼續閱讀。 Windows11天氣未顯示在工作列上的原因為何?

如何更改 Windows 11 小工具的語言 如何更改 Windows 11 小工具的語言 May 12, 2023 pm 04:58 PM

Windows11小工具是在桌面上顯示資訊的小程式。這些可以顯示天氣、股票或新聞標題。您也可以使用它們在桌面上顯示圖片或影片。預設情況下,Windows11語言設定為英語,但使用者聲稱小工具列顯示不同的語言。這使非英語人士處於劣勢,因為他們可能無法使用小部件。如果您覺得它們沒有用,您可以輕鬆停用小部件並繼續您的活動。但是,如果您發現它們使您的生活更輕鬆,那麼好消息是您可以根據需要更改語言。為什麼我的小部件使用不同的語言?如果您發現小工具顯示不同的語言,以下是幾個原因:國家或地區設定–您可能已經註

適用於 Windows 11 的 5 款最佳天氣應用程式 [2022 年清單] 適用於 Windows 11 的 5 款最佳天氣應用程式 [2022 年清單] Apr 13, 2023 pm 07:01 PM

適用於桌面的 Windows 11 天氣應用程式對於希望為可能帶來的任何天氣做好準備的人來說是一個很好的工具。它簡單,易於使用且用戶友好。在計劃您的一天時,天氣應用程式絕對是必不可少的。這是因為它可以幫助您避免被雨淋,甚至可以幫助您計劃當天的衣櫥。 Windows 11 天氣應用程式做得很好,但有些用戶可能正在尋找的不僅僅是一個簡單的天氣應用程式。其他人可能正在尋找替代品,因為他們的Windows 天氣應用程式無法運作。這導致他們為其他天氣應用程式尋找資源。它們中的大多數透過各種附加功能為您的位

Scrapy案例解析:如何抓取LinkedIn上公司訊息 Scrapy案例解析:如何抓取LinkedIn上公司訊息 Jun 23, 2023 am 10:04 AM

Scrapy是一個基於Python的爬蟲框架,可以快速且方便地獲取網路上的相關資訊。在本篇文章中,我們將透過Scrapy案例來詳細解析如何抓取LinkedIn上的公司資訊。確定目標URL首先,我們需要明確我們的目標是LinkedIn上的公司資訊。因此,我們需要找到LinkedIn公司資訊頁面的URL。開啟LinkedIn網站,在搜尋框中輸入公司名稱,在

如何在 Windows 11 上刪除天氣小工具 如何在 Windows 11 上刪除天氣小工具 May 11, 2023 pm 08:25 PM

如何從Windows11的工作列中刪除天氣小工具擺脫天氣小工具的最簡單方法之一是在「設定」中停用它。若要透過設定停用天氣小工具,請使用以下步驟:按開始,然後選擇設定。當設定開啟時,點擊左側清單中的個人化。在右側,選擇工作列選項。展開工作列專案部分並關閉小工具開關。當您關閉開關時,天氣小部件將從工作列中消失。如果要重新啟用它,請返回開始>設定>個人化>工作列並重新打開小部件開關。注意:您可以在「設定」功能表的此區域中開啟或關閉其他工作列按鈕。例如,您可以刪除Teams聊天圖示。如何通

使用 PHP 實作抓取 Instagram 資訊的範例 使用 PHP 實作抓取 Instagram 資訊的範例 Jun 13, 2023 pm 06:26 PM

Instagram是目前最受歡迎的社群媒體之一,擁有數億的活躍用戶。其中用戶上傳了數十億的圖片和視頻,這些數據對於許多企業和個人來說​​都是非常有價值的。因此,在許多情況下,需要使用程式自動抓取Instagram資料。本文將介紹如何使用PHP實現Instagram資料的抓取,並提供實作範例。安裝PHP的cURL擴充cURL是一個用於在各種

Windows 11 中未顯示天氣小工具 [已解決] Windows 11 中未顯示天氣小工具 [已解決] Apr 13, 2023 pm 11:10 PM

天氣小工具是允許使用者查看目前位置的天氣資訊的功能,Windows 會在其係統上自動偵測並顯示在工作列上。但最近許多 Windows 使用者報告他們無法在工作列上看到天氣小工具顯示。他們可能沒有在他們的系統上啟用它,但他們不知道它,一些用戶認為它會在 Windows 中預設為啟用。天氣小工具未顯示問題也可能是由於使用者帳戶設定檔損壞。如果 Windows 使用者沒有下載並安裝必要的 Windows 更新,則可能會導致此類問題。如果您的系統也遇到此類問題,請不要擔心,我們在本文中編譯了一系列修復程序,可

WIN10右下角天氣怎麼關 WIN10右下角天氣怎麼關 Feb 18, 2024 pm 01:38 PM

WIN10作業系統在右下角顯示天氣的功能是由系統自帶的天氣應用程式實現的,如果你不希望在工作列的右下角顯示天氣,可以透過以下幾種方法進行關閉。方法一:透過設定選單關閉點擊開始選單,選擇「設定」圖示(齒輪狀圖示)。在設定視窗中,選擇“個人化”選項。在個人化視窗左側選單中,選擇「工作列」。在工作列設定視窗右側,找到「系統圖示」區域,點擊「在工作列上顯示或隱藏系統圖示

See all articles