爬取天气信息,定时发送天气给多人python3
1 import requests 2 from requests import exceptions 3 from urllib.request import urlopen 4 from bs4 import BeautifulSoup 5 import re 6 from wxpy import * 7 import schedule 8 import time 9 10 11 #bot=Bot(cache_path=True) #登陆网页微信,并保存登陆状态12 bot = Bot(console_qr=2,cache_path="botoo.pkl")#Linux专用,像素二维码13 14 def sendblogmsg(content):15 #搜索自己的好友,注意中文字符前需要+u16 my_friend = bot.friends().search(u'王琳杰')[0]17 my_friend.send(content)18 19 my1_friend = bot.friends().search(u'浮生若梦')[0]20 my1_friend.send(content)21 22 my_group = bot.groups().search(u'聊天机器人测试')[0]23 my_group.send(content) #发送天气预报24 25 26 27 my1_group = bot.groups().search(u'测试')[0]28 my1_group.send(content) #发送天气预报29 30 def job():31 resp=urlopen('http://www.weather.com.cn/weather/101010100.shtml')32 soup=BeautifulSoup(resp,'html.parser')33 tagToday=soup.find('p',class_="tem") #第一个包含class="tem"的p标签即为存放今天天气数据的标签34 try:35 temperatureHigh=tagToday.span.string #有时候这个最高温度是不显示的,此时利用第二天的最高温度代替。36 except AttributeError as e:37 temperatureHigh=tagToday.find_next('p',class_="tem").span.string #获取第二天的最高温度代替38 39 temperatureLow=tagToday.i.string #获取最低温度40 weather=soup.find('p',class_="wea").string #获取天气41 contents = '北京' + '\n' + '最高温度:' + temperatureHigh + '\n' + '最低温度:' + temperatureLow + '\n' + '天气:' + weather 42 # result3 = '最低温度:' + temperatureLow43 #print('最低温度:' + temperatureLow)44 #print('最高温度:' + temperatureHigh)45 # print('天气:' + weather)46 sendblogmsg(contents)47 #定时48 schedule.every().day.at("22:45").do(job) #规定每天12:30执行job()函数49 while True:50 schedule.run_pending()#确保schedule一直运行51 time.sleep(1)52 bot.join() #保证上述代码持续运行