科技让生活更美好
困扰: 福州这天气,阴晴不定,变化莫测,太阳雨,晴天霹雳,怎么变态怎么来 经常下了楼,下雨没带伞,大日没带防晒衣。所以我在想,做个定时提醒,比如上班前5分钟告诉我, 天气情况,下班前5分钟告诉我下没下雨。。。
中央气象局的界面就做的很好啊,还有可视化图表!!!
说搞就搞
- 温习了一下Scrapy,对这个框架的理解,比一年前玩的时候好多了,这就是一个很好的面对对象的框架典范
- 把爬取的数据存到item里,
- 用PrettyTable打印出表格,心满意足,
- 但是发送到邮件,就不尽人意了,文本有长度限制,然后换行,在邮件中的显示就很糟糕,可读性几乎为0。
+----------+--------+--------+----------+-----------+----------+----------+----------+ | 精细预报 | 17:00 | 20:00 | 23:00 | 18日02:00 | 05:00 | 08:00 | 11:00 | +----------+--------+--------+----------+-----------+----------+----------+----------+ | 气温 | 32.3℃ | 30.4℃ | 28.6℃ | 27.6℃ | 27.2℃ | 29.8℃ | 31.6℃ | | 降水 | 无降水 | 无降水 | 0.5毫米 | 0.8毫米 | 0.6毫米 | 0.4毫米 | 无降水 | | 风速 | 3米/秒 | 2米/秒 | 2.3米/秒 | 2.7米/秒 | 1.9米/秒 | 2.1米/秒 | 3.1米/秒 | | 风向 | 东北风 | 东北风 | 东北风 | 东北风 | 东北风 | 东北风 | 东北风 | | 相对湿度 | 75.8% | 81.1% | 83.7% | 84.2% | 85.9% | 84.8% | 66.2% | | 云量 | 69.9% | 79.9% | 83.3% | 100% | 93.2% | 94.8% | 58.3% | +----------+--------+--------+----------+-----------+----------+----------+----------+
- 于是乎,我转念一想,这个网站的界面做得已经很美了,我为啥要把数据整出来自己做画面呢,直接用他的界面不就好了。
- 然后就搞起了截图的勾当。。。
- 之前的爬取就前功尽弃了,写到这里,我在想,我们做事情还是要想好再开始搞,不能像我这样,想一步做一步,效率太低下了。
-
这个道理太重要了!!!划重点。 三思而后行,凡事预则立不预则废!!<\b>
- selenium 有提供截屏的功能,并且可以可以对指定元素进行截图。真是太好用了。
- 找到指定元素,截图,
- 然后用smtplib 发送邮件,相关代码网上都很齐全,然后在发图片的时候有遇到一个麻烦的,就是图片怎么当成正文发
- emmm markdown在代码块里输入html各种miss,不懂怎么处理
@staticmethod def AttachOneImageInBody(msg, fileName): with open(fileName, 'rb') as f: msgImage = MIMEImage(f.read()) # 定义图片 ID,在 HTML 文本中引用 msgImage.add_header('Content-ID', '丢失部分1') msg.attach(msgImage) #正文显示附件图片 msg.attach(MIMEText('丢失部分', 'html', 'utf-8'))
- 丢失部分 = <html><body><p><img src=”cid:image1”></p></body></html>
- 丢失部分1 = <image1>
- 还有就是 怎么在正文发多个图片
# 调试发送多张图片的时候遇到的最蛋疼的问题: # 用for循环生成的mail_msg,不能直接attach,需要和content一起attach @staticmethod def AttachMultipleImageInBody(msg, *args): body = '丢失部分1' for fileName in args: with open(fileName, 'rb') as f: msgImage = MIMEImage(f.read()) # 定义图片 ID,在 HTML 文本中引用 msgImage.add_header('Content-ID', '丢失部分2' % fileName) msg.attach(msgImage) body = body + '丢失部分3' % fileName #正文显示附件图片 body = body + '丢失部分4' msg.attach(MIMEText(body, 'html', 'utf-8'))
- 丢失部分1 = <html><body>
- 丢失部分2 = <%s>
- 丢失部分3 = </body></html>
- 丢失部分4 = <p><img src=”cid:%s”></p>
####解决了以上问题,然后部署到jenkins上,定时构建,再不不用担心这鬼天气了,每天上下班定时定点告诉我天气情况!!!