| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # -*- coding: utf-8 -*-
- '''
- 获取天气预报
- '''
- import os
- import sys
- sys.path.append(os.path.join(os.getcwd().split('auto_news_scheduler')[0], 'auto_news_scheduler'))
- import time
- from datetime import datetime
- import httpx
- from bs4 import BeautifulSoup
- from tools_logs_handle import LogsHandle
- from tools_send_email import SendEmail
- class Weather():
- def __init__(self):
- self.email_subject = '天气预报'
- self.email_title = 'Weather forecast'
- self.email_text = '获取数据时间:\n{0}\n{1}\n\n\n\n'.format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), ('-' * 90))
- self.logs_handle = LogsHandle()
- self.now_day = time.strftime('%Y-%m-%d', time.localtime())
- def main(self):
- self.logs_handle.logs_write('Weather forecast', '开始获取天气预报数据', 'start', False)
- 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) # 增加headers参数,简单伪装UA
- response.encoding = "utf-8"
- bs = BeautifulSoup(response.text, 'html.parser') # 这里我们用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)
- self.logs_handle.logs_write('Weather forecast', e, 'error', False)
- exit(0)
- subject = "天气预报"
- title = "weather"
- text = "天气预报: {}获取并发送\n\n".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) + '\n\n'.join(one_week_weather)
- S = SendEmail(subject=subject, title=title, text=text)
- S.send()
- self.logs_handle.logs_write('Weather forecast', '天气预报数据已获取', 'done', False)
- # if __name__ == "__main__":
- # L = LogsHandle()
- # L.logs_write('Weather forecast', '开始获取天气预报数据', 'start', False)
- # W = Weather()
- # W.main()
- # L.logs_write('Weather forecast', '天气预报数据已获取', 'done', False)
|