Python实训day11pm【大作业简略解析】
- Python實訓-15天-博客匯總表
目錄
1、課堂筆記
2、群消息
3、代碼
3.1、demo1
3.2、demo2
1、課堂筆記
大作業題目思路引導:
題目1:定時爬取每個地級市的實時天氣狀況、存入excel中、為每個城市生成html展示、歷史excel文件以每日為單位歸檔到文件夾中。
考察點:爬蟲+文件讀寫+目錄操作+pandas
網址:http://www.weather.com.cn/
定時任務框架(參考文檔):https://www.cnblogs.com/xiao-xue-di/p/14081790.html
每個地市:1.從網站上尋找所有的地市列表-->地市編碼(beautifulsoup解析頁面)或(找數據接口)
? ? ? ? ? ? ? ? ? 2.根據地市編號,爬取該地的實時天氣(beautifulsoup解析頁面)或(找數據接口)
以合適的數據結構存儲數據、導入到excel中(注意excel文件的存儲目錄、根據需要新建目錄、以系統時間命名文件或文件夾)
按照html的格式寫文件(IO流):格式是統一的,部分動態數據需要填充(頁面展現效果看個人的htmls的水平和想象力)【不要做太復雜】
demo1:獲取所有地市(?k:名、 v:編碼,存入dict中)
??
2、群消息
每小組,從題目1和題目2中,選擇一個完成即可。請組長組織商討,并進行后續的任務分工和討論。
題目1:比較成模塊,利于分工。題目2:可能代碼量沒那么多,但是細節點也不少。
有一個city.js吧,里面是城市數據。
400多個城市,在測試階段(代碼可能會出現bug的情況下),不要一次拉取所有,取前10個城市,把數據爬下來-->寫入excel-->生成html等流程。
因為: 頻繁的訪問人家的接口-->被封,ip會被拉入黑名單。1s 400次,不是人工,是機器。
最好,再手動敲一遍,哪怕就換個變量名,再查重的時候,也會好一些。
數據爬取---->合適的數據結構---->生成pandas的DataFrame ---->to_excel就能得到表格
3、代碼
3.1、demo1
''' 大作業題目思路引導: 題目1:定時爬取每個地級市的實時天氣狀況、存入excel中、為每個城市生成html展示、歷史excel文件以每日為單位歸檔到文件夾中。 考察點:爬蟲+文件讀寫+目錄操作+pandas 網址:http://www.weather.com.cn/每個地市: 1.從網站上尋找所有的地市列表-->地市編碼(beautifulsoup解析頁面)或(找數據接口) 2.根據地市編號,爬取該地的實時天氣(beautifulsoup解析頁面)或(找數據接口)省份沒什么用,我們只需要地級市的信息。 ''' import requests as req import json import time# demo1:獲取所有地市信息(k:名、v:編碼,放入dict中) hds = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}resp = req.get('https://j.i8tq.com/weather2020/search/city.js', headers=hds)ct = resp.content.decode('utf-8')ct = ct[ct.index('=') + 1:]; # dict格式的str->字符串切割,保留=后面的內容info = json.loads(ct); # str轉dict # print(info) # print(type(info)) # <class 'dict'>cityinfo = {}; # k:城市名、v:城市編碼,將信息存儲到dict中topcity = ['北京', '天津', '上海', '重慶']; # 單獨列出直轄市# 遍歷字典 for province, cities in info.items(): # 最外層:省份(所有省份)與直轄市(地級市)for cityname, areas in cities.items(): # 城市名與直轄市、遍歷所有地級市# print(cityname) # 北京、上海、天津、重慶、哈爾濱、齊齊哈爾、鄭州、商丘...# print(areas[cityname]['AREAID']) # 101010100、101020100...if cityname in topcity: # 若是4個直轄市之一,拉取所有的數據【存儲鍵值對-城市名:城市編碼】for k, v in areas.items():cityinfo[k] = v['AREAID'];else:cityinfo[cityname] = areas[cityname]['AREAID'];print(len(cityinfo)) # 441 print(cityinfo)# demo2:根據城市編碼爬取實時天氣 # '紹興': '101210507', '臺州': '101210601', '溫州': '101210701' def loadweather(cityname, code):hds = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}hds['Referer'] = 'http://www.weather.com.cn/';resp = req.get('http://d1.weather.com.cn/sk_2d/{}.html'.format(code), headers=hds)ct = resp.content.decode('utf-8')ct = json.loads(ct[ct.index('=') + 1:])# print(ct)# print(cityname, ':')# print(ct['temp'])# print(ct['SD'])# print(ct['WD'], ct['WS'])# print(ct['aqi'])print(cityname, ':', ct['temp'], '、', ct['SD'], '、', ct['WD'], '、', ct['WS'], '、', ct['aqi'])# loadweather('紹興', '101210507'); count = 0 for k, v in cityinfo.items():loadweather(k, v);# import time# time.sleep(1.5); # 1.5秒count += 1; # 取前10個城市的信息進行測試if count == 10:break;3.2、demo2
''' 大作業題目思路引導: 題目1:定時爬取每個地級市的實時天氣狀況、存入excel中、為每個城市生成html展示、歷史excel文件以每日為單位歸檔到文件夾中。 考察點:爬蟲+文件讀寫+目錄操作+pandas 網址:http://www.weather.com.cn/每個地市: 1.從網站上尋找所有的地市列表-->地市編碼(beautifulsoup解析頁面)或(找數據接口) 2.根據地市編號,爬取該地的實時天氣(beautifulsoup解析頁面)或(找數據接口)省份沒什么用,我們只需要地級市的信息。 ''' import requests as req import jsonhds = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'} hds['Referer'] = 'http://www.weather.com.cn/'; resp = req.get('http://d1.weather.com.cn/sk_2d/101210507.html?_=1642489100702', headers=hds) # 時間戳?_=1642489100702可省 ct = resp.content.decode('utf-8') print(ct) # var dataSK={"nameen":"shaoxing","cityname":"紹興","city":"101210507","temp":"7","tempf":"44","WD":"東北風","wde":"NE","WS":"1級","wse":"1km\/h","SD":"85%","sd":"85%","qy":"1023","njd":"3km","time":"22:25","rain":"0","rain24h":"0","aqi":"123","aqi_pm25":"123","weather":"晴","weathere":"Sunny","weathercode":"d00","limitnumber":"","date":"01月18日(星期二)"} ct = json.loads(ct[ct.index('=') + 1:]) print(ct['temp']) # 7 print(ct['SD']) # 85% print(ct['WD'], ct['WS']) # 東北風 1級 print(ct['aqi']) # 123# demo2:根據城市編碼爬取實時天氣 # '紹興': '101210507', '臺州': '101210601', '溫州': '101210701' def loadweather(cityname, code):hds = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}hds['Referer'] = 'http://www.weather.com.cn/';resp = req.get('http://d1.weather.com.cn/sk_2d/{}.html'.format(code), headers=hds)ct = resp.content.decode('utf-8')ct = json.loads(ct[ct.index('=') + 1:])# print(ct)# print(cityname, ':')# print(ct['temp'])# print(ct['SD'])# print(ct['WD'], ct['WS'])# print(ct['aqi'])print(cityname, ':', ct['temp'], '、', ct['SD'], '、', ct['WD'], '、', ct['WS'], '、', ct['aqi'])# loadweather('紹興', '101210507');梅科爾工作室 @全體成員?培訓太累了!我和你們一樣也很累!很多同學放假之后希望回去休息休息,這種要求是毋庸置疑的,而工作室呢,一直倡導不斷學習與提高。可能很多同學不理解為什么放假了,如此的辛苦,我們學習的同時,還有很多人比我們還要努力,利用假期別人休息的時間,而不斷的學習和增進。那么很多同學就有疑問,學這些課程有什么用,想過自己主宰的日子,擁有自己的愜意時光,這種要求都是毋庸置疑,但是有一句話大家知道就是“夏蟲不可與語冰,篤于時也!”,夏天的蟲子你告訴他準備好過冬的棉衣和糧食,他認為多此一舉,他是不理解的,因為他從來沒有活到過冬天,等到了冬天的時候等待的結果只有被凍死。就像你們年輕的大學生一樣,沒有經歷過就業,沒有經歷過被別人瞧不起,沒有經歷過“好”學校鄙視“輕大”時的欲哭無淚,他們會認為自己生活是美好的、輕松的、是不需要努力的。可能考研是大家手里唯一的稻草,這根稻草也構建了大家的圍城,很多同學認為讀了研究生就包治百病,但是研究生導師是因為你具備的能力而選擇你,而不是因為選擇了你培養你的能力,這本身就是一個雞生蛋和蛋生雞的問題。起碼你們知道研究生導師不傻,他們收研究生不是培養,而是使用。而你的本科學校沒有多大優勢的前提下,個人的能力就顯得至關重要,你具備什么樣的能力,值得他們的青睞呢?讀了研究生不一定會有能力的提升,研究生不一定有更好的工作機會,只是校招時多了一張紙為你背書,這張紙早晚是要被戳破的,到了高學歷的平臺上,低能力只能被別人更加碾壓。李老師是經歷過這個過程的,所以才會一而再再而三地要求大家進行培訓和學習,這些呢恰恰屬于冬天做的越冬準備。整個培訓并不是出于一種變態的心理去折磨大家,沒有一分錢課時費,圖什么,有沒有犯罪動機呢?只是一種出于學生不自知的一種自身客觀需要而提出的培訓要求,那么開學之后和你的宿舍人溝通交流之后,你就會知道自己進步了多少,長進了多少以及荒廢了多少。“不怕苦,吃半輩子苦,怕吃苦,吃一輩子苦”,這句話到什么時候都是正確的,因此呢,在寒假期間并不是我們休息的時候,而是我們利用別人打盹的時候奮起直追,彎道超車,我也希望每一個梅科爾工作室的同學不要做平庸的人,能夠在這個時刻讓自己通過一系列的學習提升思考達成質的變化。如果有同學吃不了這份苦,更愿意享受自己的時慵懶的青春生活,沒有關系,誰都可以追求你的愛好與喜樂。老師也祝福你開心的度過每一天!
??
總結
以上是生活随笔為你收集整理的Python实训day11pm【大作业简略解析】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python实训day11am【大作业思
- 下一篇: Python实训day12am【网络爬虫