歷史天氣爬蟲(chóng)

最近要分析天氣對(duì)業(yè)務(wù)的影響拾枣,所以做了一個(gè)歷史天氣的爬蟲(chóng)


import demjson

import requests

class Weather_2345():

  def __init__(self,area,begin_time,end_time):

      self.area,self.begin_time,self.end_time= area,begin_time,end_time

      self.headers= {

        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",}

      self.prefix_url= "http://tianqi.2345.com/t/wea_history/js/{1}/{0}_{1}.js"

      self.code_url= "http://tianqi.2345.com/js/citySelectData.js"

      self.code_str= None

  def get_weather(self):

      '''

      :return: 區(qū)域,日期,最高氣溫,最低氣溫,天氣,風(fēng)向,風(fēng)力,空氣指數(shù),空氣情況,空氣等級(jí)'''

      result = []

      time_list = self.__generate_time_list(self.begin_time,self.end_time)

for curr_month in time_list:

        area_code = self.get_areacode(self.area)

url = self.prefix_url.format(area_code,curr_month)

try:

            response = requests.get(url,headers=self.headers).text[16:-1]

            response_dict = demjson.decode(response)

city = response_dict['city']

            for line in response_dict['tqInfo']:

              if line:

                  if "aqi" in line:

                    result.append((city,line["ymd"],line["bWendu"].rstrip("℃"),line["yWendu"].rstrip("℃"),

line["tianqi"],line["fengxiang"],line["fengli"],line["aqi"],

line["aqiInfo"],line["aqiLevel"]))

else:

                    result.append((city,line["ymd"],line["bWendu"].rstrip("℃"),line["yWendu"].rstrip("℃"),

line["tianqi"],line["fengxiang"],line["fengli"],None,None,None))

except Exception as e:

            print("error url:" + url)

return result

  def get_areacode(self,area):

      if not self.code_str:

        self.code_str= requests.get(self.code_url,headers=self.headers).text

try:

        area_index = self.code_str.index(area,203)

except Exception as e:

        return None

      return self.code_str[area_index - 8: area_index - 3]

  def __generate_time_list(self,begin_time,end_time):

      time_list = []

      for y in range(int(begin_time[:4]),int(end_time[:4])+ 1):

        for m in range(1,13):

            time_list.append("{:0>4d}{:0>2d}".format(y,m))

time_list = time_list[int(begin_time[4:])- 1:int(end_time[4:])- 12]

      return time_list

if __name__== '__main__':

  # 可以這么用

  weather = Weather_2345('廣州','201811','201901')

print(weather.get_weather())

# 也可以這么用

  weather = Weather_2345('下面會(huì)再次設(shè)置區(qū)域這里可以隨便填','201811','201901')

area_list = ["白云","從化","花都","海珠","黃埔","荔灣","南沙","番禺","天河","越秀","增城"]

  with open('./weather.log','w',encoding='utf-8')as fw:

      fw.write("區(qū)域,日期,最高氣溫,最低氣溫,天氣,風(fēng)向,風(fēng)力,空氣指數(shù),空氣情況,空氣等級(jí)" + "\n")

for area in area_list:

        weather.area= area

        weather_list = weather.get_weather()

for lines in weather_list:

            fw.write(",".join(lines)+ '\n')

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末病涨,一起剝皮案震驚了整個(gè)濱河市装盯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌橡淆,老刑警劉巖闷沥,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異媳否,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)荆秦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門逆日,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人萄凤,你說(shuō)我怎么就攤上這事√履模” “怎么了靡努?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我惑朦,道長(zhǎng)兽泄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任漾月,我火速辦了婚禮病梢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梁肿。我一直安慰自己蜓陌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布吩蔑。 她就那樣靜靜地躺著钮热,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烛芬。 梳的紋絲不亂的頭發(fā)上隧期,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音赘娄,去河邊找鬼仆潮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛遣臼,可吹牛的內(nèi)容都是我干的性置。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼暑诸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚌讼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起个榕,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤篡石,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后西采,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體凰萨,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年械馆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胖眷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霹崎,死狀恐怖珊搀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尾菇,我是刑警寧澤境析,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布囚枪,位于F島的核電站,受9級(jí)特大地震影響劳淆,放射性物質(zhì)發(fā)生泄漏链沼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一沛鸵、第九天 我趴在偏房一處隱蔽的房頂上張望括勺。 院中可真熱鬧,春花似錦曲掰、人聲如沸疾捍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拾氓。三九已至,卻和暖如春底哥,著一層夾襖步出監(jiān)牢的瞬間咙鞍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工趾徽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留续滋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓孵奶,卻偏偏與公主長(zhǎng)得像疲酌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子了袁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 2018.4.7星期六 晴 從早晨出門前的情緒低落到見(jiàn)到海鷗那一刻的欣喜朗恳,再到回到家中的不喜悅,打開(kāi)手機(jī)聽(tīng)羽音载绿,大...
    春回大地春玲閱讀 441評(píng)論 0 2
  • 每個(gè)人都有自己喜歡的玩具粥诫,當(dāng)然我也不例外,在我那堆積如山的玩具中我最喜歡的就是悠悠球啦崭庸。 我的悠悠...
    楊宜超閱讀 1,099評(píng)論 0 0
  • 每一段愛(ài)情最開(kāi)始的模樣都是浪漫甜蜜怕享,可后來(lái)有的熬成正果执赡,有的就如你我各散天涯。 但走散了并不意味著忘卻了函筋。分手之后...
    lhl_in閱讀 317評(píng)論 0 0