立即学习:https://edu.youkuaiyun.com/course/play/24797/282245?utm_source=blogtoedu
import urllib.request, re import datetime, pygal city = input('请输入一个城市的拼音_____') # year = input('请输入一个年份______') getmonth = input('请输入一个月份____') getday = input('请输入一个日期____') def get_tianqi(cit, yea, mon, da): url = 'https://m.tianqi.com/tianqi/%s/%s%s%s.html' % (cit, yea, mon, da) print(url) request = urllib.request.Request(url) # 伪造浏览器访问头 request.add_header('User-Agent', 'Mozilla/5.0') return urllib.request.urlopen(request).read().decode('UTF-8') # print(get_tianqi('qingdao', '2020', '04', '07')) # 日期,最高气温,最低气温 dates, high_t, low_t = [], [], [] # city = 'qingdao' year = '2020' # months = ['%02d' % i for i in range(1, 13)] months = [] # print(months) # 定义一个开始的时间 # startT = datetime.datetime(2019,12,31) months.append('%02d' % int(getmonth)) try: for month in months: html = get_tianqi(city, year, month, '%02d' % int(getday)) # 去掉内容中的空格 htmlText = ''.join(html.split()) # print(htmlText) pattern = re.compile('<ulclass="w100listjump">(.* ?)</ul>') find_ul = re.findall(pattern, htmlText) # print(find_ul[0]) pattern1 = re.compile('<li><atitle="(.*?)</a></li>') find_child = re.findall(pattern1, find_ul[0]) # print(find_child) for dayval in find_child: week_pattern = re.compile('<divclass="futuredaysfl">(.*?)</div><divclass') week_val = re.findall(week_pattern, dayval) # print(week_val[0]) # 获取时间和星期 dates.append(week_val[0][18:23] + '/' + week_val[0][5:7]) # 获取温度最大和最小 tem_pattern = re.compile('<divclass="futuredescfl"><div>(.* ?)</div><div>') tem_val = re.findall(tem_pattern, dayval) # print (tem_val[0].split('~')) # print((''.join((tem_val[0].split('~'))[0]).split('°'))[0]) low_t.append(int((''.join((tem_val[0].split('~'))[0]).split('°'))[0])) high_t.append(int((''.join((tem_val[0].split('~'))[1]).split('°'))[0])) print(dates) print(low_t) print(high_t) dm = pygal.Bar() dm.add('最低温度', low_t) dm.add('最高温度', high_t) dm.title = '%s之后7天天气' % (getmonth + '月' + getday + '日') dm.x_labels = dates dm.x_title = '日期和星期' dm.y_title = '温度(摄氏度)' dm.legend_at_bottom = True dm.render_to_file('test65.svg') except OSError as e: print(e)