获取天气情况
用到的模块有 :
re,requests,time
大体思路:(1)首先找到目标网站,向该网站发送请求,得到响应内容
(2)通过re模块对获得的响应内容进行筛选(也可以是美汤)
(3)一周后查找天气情况,再次筛选
importreimportrequestsimporttimedefget_url():try:num=input('请输入你要查询的城市:')headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363','Cookie':'Hm_lpvt_ab6a683aa97a52202eab5b3a9042a8d2=1593475715; Hm_lvt_ab6a683aa97a52202eab5b3a9042a8d2=1593475648; UM_distinctid=173028cca6411d1-01f7d541a39b96-71415a3a-1fa400-173028cca65a72; CNZZDATA1277722738=1358689083-1593473370-https%253A%252F%252Fwww.tianqi.com%252F%7C1593473370; CNZZDATA1275796416=466240679-1593471302-https%253A%252F%252Fwww.baidu.com%252F%7C1593471302; CNZZDATA1268732535=1963896862-1593474962-https%253A%252F%252Fwww.tianqi.com%252F%7C1593474962'}globalresponsereg=r'<h2>(.*?)</h2>'refind=re.findall(reg,response.text)reg_time=r'<dd>(.*?)</dd>'refind_time=re.findall(reg_time,response.text)reg_c=r'<p><b>(.*?)</b><i>.</i></p>'refind_C=re.findall(reg_c,response.text)reg_wter=r'<span><b>(.*?)</b>.*?</span>'refind_wter=re.findall(reg_wter,response.text)reg_wter_2=r'<span><b>.*?</b>(.*?)</span>'refind_wter_2=re.findall(reg_wter_2,response.text)reg_all=r'<dd><b>(.*?)</b><b>(.*?)</b><b>(.*?)</b></dd>'refind_all=re.findall(reg_all,response.text)reg_sun=r'<dd ><h5>(.*?)</h5><h6>(.*?)</h6><span>(.*?)<br />(.*?)</span></dd>'refind_sun=re.findall(reg_sun,response.text)('\n您现在看到的城市是:',refind[0],'\n')('\t日期:',refind_time[0],time.asctime())('\t温度:',refind_C[0],'℃','\t 最低温/最高温:',refind_wter_2[0])('\t天气状况:',refind_wter[0])('\t',refind_all[0][0])('\t',refind_all[0][1])('\t',refind_all[0][2])('\t',refind_sun[0][0],'\n\t',refind_sun[0][1],'\n\t',refind_sun[0][2],'\n\t',refind_sun[0][3])exceptIndexError:('请输入具体城市名,不要输入省份!')get_url()defweek():globalresponseweek1=r'<li><b>(.*?)</b><span>(.*?)</span><img src=.*?></li>'find_wek=re.findall(week1,response.text)week2=r'<li><span>(.*?)</span><b>(.*?)</b></li>'find_wek2=re.findall(week2,response.text)week3=r'<ul> *?(.*?)'find_wek3=re.findall(week3,response.text)('\t',find_wek[0][0],find_wek[0][1],'最高温:',find_wek2[0][0],'最低温:',find_wek2[0][1])('\t',find_wek[1][0],find_wek[1][1],'最高温:',find_wek2[1][0],'最低温:',find_wek2[1][1])('\t',find_wek[2][0],find_wek[2][1],'最高温:',find_wek2[2][0],'最低温:',find_wek2[2][1])('\t',find_wek[3][0],find_wek[3][1],'最高温:',find_wek2[3][0],'最低温:',find_wek2[3][1])('\t',find_wek[4][0],find_wek[4][1],'最高温:',find_wek2[4][0],'最低温:',find_wek2[4][1])('\t',find_wek[5][0],find_wek[5][1],'最高温:',find_wek2[5][0],'最低温:',find_wek2[5][1])('\t',find_wek[6][0],find_wek[6][1],'最高温:',find_wek2[6][0],'最低温:',find_wek2[6][1])(find_wek3)if__name__=='__main__':('\n','*'*16,'实时天气查询程序,输入时请输入该城市的拼音,没有查询到该城市则默认北京','*'*16,'\n')('例如: 北京 ---> beijing ')get_url()w=input('\n查询未来一周的天气?(是/否)')ifw=='是':week()else:input('请按任意键退出...')input('请按任意键退出...')