大家好,小编来为大家解答以下问题,python大作业代码及文档,python大作业有哪些题目,现在让我们一起来看看吧!
目录
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中,选择一个完成即可python turtle画三角形的树。请组长组织商讨,并进行后续的任务分工和讨论。
题目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 json
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/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');
梅科尔工作室 @全体成员 培训太累了!我和你们一样也很累!很多同学放假之后希望回去休息休息,这种要求是毋庸置疑的,而工作室呢,一直倡导不断学习与提高。可能很多同学不理解为什么放假了,如此的辛苦,我们学习的同时,还有很多人比我们还要努力,利用假期别人休息的时间,而不断的学习和增进。那么很多同学就有疑问,学这些课程有什么用,想过自己主宰的日子,拥有自己的惬意时光,这种要求都是毋庸置疑,但是有一句话大家知道就是“夏虫不可与语冰,笃于时也!”,夏天的虫子你告诉他准备好过冬的棉衣和粮食,他认为多此一举,他是不理解的,因为他从来没有活到过冬天,等到了冬天的时候等待的结果只有被冻死。就像你们年轻的大学生一样,没有经历过就业,没有经历过被别人瞧不起,没有经历过“好”学校鄙视“轻大”时的欲哭无泪,他们会认为自己生活是美好的、轻松的、是不需要努力的。可能考研是大家手里唯一的稻草,这根稻草也构建了大家的围城,很多同学认为读了研究生就包治百病,但是研究生导师是因为你具备的能力而选择你,而不是因为选择了你培养你的能力,这本身就是一个鸡生蛋和蛋生鸡的问题。起码你们知道研究生导师不傻,他们收研究生不是培养,而是使用。而你的本科学校没有多大优势的前提下,个人的能力就显得至关重要,你具备什么样的能力,值得他们的青睐呢?读了研究生不一定会有能力的提升,研究生不一定有更好的工作机会,只是校招时多了一张纸为你背书,这张纸早晚是要被戳破的,到了高学历的平台上,低能力只能被别人更加碾压。李老师是经历过这个过程的,所以才会一而再再而三地要求大家进行培训和学习,这些呢恰恰属于冬天做的越冬准备。整个培训并不是出于一种变态的心理去折磨大家,没有一分钱课时费,图什么,有没有犯罪动机呢?只是一种出于学生不自知的一种自身客观需要而提出的培训要求,那么开学之后和你的宿舍人沟通交流之后,你就会知道自己进步了多少,长进了多少以及荒废了多少。“不怕苦,吃半辈子苦,怕吃苦,吃一辈子苦”,这句话到什么时候都是正确的,因此呢,在寒假期间并不是我们休息的时候,而是我们利用别人打盹的时候奋起直追,弯道超车,我也希望每一个梅科尔工作室的同学不要做平庸的人,能够在这个时刻让自己通过一系列的学习提升思考达成质的变化。如果有同学吃不了这份苦,更愿意享受自己的时慵懒的青春生活,没有关系,谁都可以追求你的爱好与喜乐。老师也祝福你开心的度过每一天!
![]()
![]()