You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
66 lines
2.0 KiB
# -*- coding: utf-8 -*-
|
|
'''
|
|
获取天气预报
|
|
'''
|
|
import os
|
|
import sys
|
|
|
|
sys.path.append(os.path.join(os.path.abspath(__file__).split('AutoInfo')[0] + 'AutoInfo'))
|
|
SUB_PROJECT_NAME = "获取天气预报"
|
|
PROJECT_PATH = os.path.join(os.path.abspath(__file__).split('AutoInfo')[0] + 'AutoInfo')
|
|
|
|
from bs4 import BeautifulSoup
|
|
|
|
from utils.utils import *
|
|
|
|
|
|
|
|
class Weather():
|
|
def main(self):
|
|
print('开始获取天气预报数据')
|
|
try:
|
|
area_code = '59287'
|
|
one_week = [
|
|
'/tomorrow-%s.htm' % area_code,
|
|
'/third-%s.htm' % area_code,
|
|
'/fourth-%s.htm' % area_code,
|
|
'/fifth-%s.htm' % area_code,
|
|
'/sixth-%s.htm' % area_code,
|
|
'/seventh-%s.htm' % area_code,
|
|
]
|
|
url = "https://tianqi.2345.com/today-%s.htm" % area_code
|
|
header = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8'}
|
|
response = httpx.get(url=url, headers=header)
|
|
response.encoding = "utf-8"
|
|
bs = BeautifulSoup(response.text, 'html.parser')
|
|
|
|
one_week_weather = []
|
|
for week in one_week:
|
|
a = bs.find_all('a', href=week)
|
|
a = ' '.join(a[0].text.split())
|
|
one_week_weather.append(a)
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
print('Weather forecast')
|
|
exit(0)
|
|
|
|
text = "天气预报: {}获取并发送\n".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) + '\n'.join(
|
|
one_week_weather)
|
|
|
|
# 推送到 message
|
|
GotifyNotifier('天气预报数', text, 'weather').send_message()
|
|
|
|
print('天气预报数据已获取')
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
W = Weather().main()
|
|
except Exception as e:
|
|
print(e)
|
|
L = LogsHandle()
|
|
L.logs_write('Weather forecast', str(e), 'error')
|
|
|
|
|