从百度天气获取当地明天的天气情况,如果明天下雨,请发送邮件通知全体同事带伞,

如果明天气温低于10度,请邮件提醒同事注意保暖,如果气温高于30度则提醒同事注意高温。

假设存在发送邮件的方法self.send_email(email_content)

代码如下:

#coding=utf-8
from selenium import webdriver
import unittest
from time import sleep

class WeatherReport(unittest.TestCase):

    def setUp(self):
        self.dr = webdriver.Chrome()
        self.weather, self.the_highest_temperature, self.the_lowest_temperatrue = self.get_tomorrow_weather_and_temperature()
        self.content = self.email_content()

    def get_tomorrow_weather_and_temperature(self):
        self.baidu_search('成都天气')
        sleep(5)
        weather = self.dr.find_elements_by_css_selector('.op_weather4_twoicon_weath')[1].text #首先获取明日天气
        print('明日天气为%s' %weather)
        temperature = self.dr.find_elements_by_css_selector('.op_weather4_twoicon_temp')[1].text #其次获取明日温度
        the_highest_temperature = int(temperature.split(' ~ ')[0]) #从温度中获取明日最高温度并转为整型
        print('明日最高温度%s℃' %the_highest_temperature)
        the_lowest_temperature = temperature.split(' ~ ')[1] #从温度中获取明日最低温度
        print('明日最低温度%s' %the_lowest_temperature)
        return weather, the_highest_temperature, the_lowest_temperature

    def baidu_search(self, CityWeather):
        self.dr.get('http://www.baidu.com')
        self.dr.find_element_by_id('kw').send_keys(CityWeather)
        self.dr.find_element_by_id('su').click()

    def email_content(self):
        if '雨' in self.weather:
            content = '通知:明天有雨,请全体同事带伞!'
        else:
            if self.the_highest_temperature > 30:
                content = '提醒:明日气温高于30度,请全体同事注意高温'
            elif self.the_highest_temperature < 10:
                content = '提醒:明日气温低于10度,请全体同事注意保暖'
            else:
                content = ''
        return content

    def test_send_email(self):
        print('%s' %self.content)

    def tearDown(self):
        self.dr.quit()

if __name__ == '__main__':
    unittest.main()

网页如下:

实现如下:

用python+selenium从百度获取本地明日的天气信息并根据温度情况设置提醒的更多相关文章

  1. python selenium 练习 自动获取豆瓣阅读当前特价书籍 chrome 元素定位 窗口切换 元素过期

    豆瓣原创电子书每周推出数十本限时免费数目,一周免费期过后恢复原价.想着豆瓣原创书中有不少值得一看,便写了个脚本,免去一个个添加的烦恼. 使用了Windows下selenium+Python的组合,有较 ...

  2. python+selenium实现百度关键词搜索自动化操作

    缘起 之前公司找外面网络公司做某些业务相关关键词排名,了解了一下相关的情况,网络公司只需要我们提供网站地址和需要做的关键词即可,故猜想他们采取的方式应该是通过模拟用户搜索提升网站权重进而提升排名. 不 ...

  3. Python + Selenium 练习篇 - 获取页面所有邮箱

    代码如下: # coding=utf-8import re    #python中利用正则,需要导入re模块from selenium import webdriverdriver = webdriv ...

  4. python selenium实现百度搜索

    1.环境 python2.7+selenium+phantomjs+linux 2.代码 #-*-coding:utf-8 -*- from selenium import webdriver fro ...

  5. Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

    由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...

  6. Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的,不 ...

  7. [VC]获取本地程序的版本信息信息

    CString CQwerApp::IS_GetAppVersion(char *AppName) { ////需要加上version.lib在link里 CString AppVersion; // ...

  8. python使用wmi模块获取windows下的系统信息监控系统-乾颐堂

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取w ...

  9. Linux下编程获取本地IP地址的常见方法

    转载于:http://blog.csdn.net/k346k346/article/details/48231933 在进行linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之 ...

随机推荐

  1. 利用jQueryRotate旋转插件开发大转盘抽奖

    前言: 公司原来开发大转盘抽奖活动用的是flash 我发现swf文件竟然有6m大,吓尿了! 其实完全可以用js写的,但是自身前端功力有限,且时间紧迫,所以直接用旋转插件就好,兼容各方面都可以保证. 1 ...

  2. Git 撤消

    现在添加一个新的文件 t.c, 写一行 int a; 用 git add . 添加跟踪,当前状态 $ git status On branch master Changes to be committ ...

  3. lnmp 设置ci pathinfo和去掉index.php

    LNMP上各个版本pathinfo各个版本的设置基本一样: lnmp v1.1上,修改对应虚拟主机的配置文件去掉#include pathinfo.conf前面的#,把try_files $uri = ...

  4. 计算机网络(10)-----TCP的拥塞控制

    TCP的拥塞控制 拥塞(congestion) 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏. 拥塞控制 拥塞控制就是防止过多的数据注入到网络中,这样可以使网 ...

  5. 【mysql】关于循环插入数据 存储设计

    要求插入的数据有一定的规律 新建实例列表 CREATE TABLE users ( userId ) NOT NULL, userName ) NOT NULL, Serves ) NOT NULL, ...

  6. 认识WCF

    WCF 一.什么是WCF? 1.Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口.它是.NET框 ...

  7. VisualSVN 4.0.11补丁原创发布

    VisualSVN 4.0.11补丁原创发布 目前是官方最新版本.

  8. C++重载流运算符,将存储结构体的vector直接写入文件

    我们知道,当vector很大的时候,如果使用循环的方式将其中的元素写入文件将非常费时,因此有没有办法将vector一次性写入文件呢? 采用流运算符重载的方法可以做到,不仅基本类型的vector可以一次 ...

  9. 使windows隐藏文件全部显示出来

    win+R => cmd=>attrib -s -b *.*  /S /D 找出所有隐藏文件夹—— FindHidden

  10. Oracle 行转列(不固定行数的行转列,动态)(转)

    http://bbs.csdn.net/topics/330039676 SQLSERVER :行列转换例子:  http://www.cnblogs.com/gaizai/p/3753296.htm ...