如何用脚本自动填温度

2021-06-03 14:09发布

用Python设计一个简单的脚本,每天零点准时在微信公众号上填温度

用Python设计一个简单的脚本,每天零点准时在微信公众号上填温度

6条回答

抱歉,目前暂时没有的,因为实现不了。普通公号只可以推送一次信息,而且每个粉丝地区不同,无法同时都发,只有你主动调动关键词去获取,回复成都天气,就收到天气

任@先生
3楼 · 2021-06-05 10:35

这个现阶段的技术来说是实现不了的呀

嘿呦嘿呦拔萝卜
4楼 · 2021-08-26 14:38

1)QTP工具。QTP是一个快速测试专业工具。它的优点是可以快速建立企业自动化框架,但不是一个全能的工具,因为利用QTP并不能帮助用户找出更多的 BUG,只能提高执行测试用例的效率。 QTP的价格也较贵。 QTP主要应用于较稳定的测试项目的回归测试,UI的变化不明显,功能较稳定的项目。它可以节省回归测试的成本,但相对手工测试来说,QTP对测试人员的要求较高,比如要掌握VB脚本,掌握函数调用等技术;另外,建立QTP框架前期需要投入较大的人力写测试用例,加上调试的时间,是一笔不小的开销,所以企业在选用QTP测试工具时一定要三思而后行。
  2)Loadrunner是一个企业级性能测试工具,应用十分广泛。对于WEB应用,Loadrunner的优势十分明显。但与QTP一样,lr的 License十分昂贵,所以很多企业都使用破解版。并且真正掌握LR精髓的人员并不多,很多人都会使用这个工具,但能用这个工具找出系统瓶颈的人并不多,所以,会使用Loadrunner和会性能测试是两码事。懂脚本语言的性能测试人员当然最好。
  3)Python和Tcl/tk脚本语言。在我之前的经验中,我用到过PYTHON和TCL。他们都是脚本语言,不需要编译。两种语言的特点如下:Python开发JAVA方面的http接口比较方便;tcl/tk开发C++方面的接口更容易一些。PYTHON写的程序可读性强,TCL写的程序的可读性不好。

一个Ai
5楼 · 2021-09-02 13:53

操作系统:Windows / Linux


Python版本:3.7.2


2 代码实现

我们要实现用Python来发微信,发送的内容是每天最新的天气信息。很明显我们需要完成两部分的准备,先来看看获取天气信息这部分内容。


2.0 准备工作

本文我们用到的第三方库有requests、wxpyy,若环境还没有,按如下方式进行安装即可。


pip install wxpy

pip install requests


2.1 获取天气信息

这里我使用的API的请求链接如下:


http://t.weather.sojson.com/api/weather/city/city_code


请求方式是GET方法,使用时注意更换为自己城市对应的city_code,除此之外不用带任何参数。


请求是restfull风格,city_code为9位数字,如下示例:


{

  "_id": 58,

  "id": 59,

  "pid": 3,

  "city_code": "101230201",

  "city_name": "厦门"

}

大家可以从_city.json文件中获取各个城市对应的编号。该文件我已经放在Github本文章对应的目录下了,大家可自行查询使用。


# weather API的URL,此处的城市编号,参看_city.json

url = 'http://t.weather.sojson.com/api/weather/city/101010200'

header = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'

}


# 请求Weather API并拿到服务器返回的数据

rep = requests.get(url, headers = header)

rep.encoding = "utf-8"

result = ''

weather = rep.tex

这个API接口的返回值内容很多,以下仅展示返回的部分信息。实际使用中仅用到三块内容,首先是城市信息。


"cityInfo": {

    "city": "海淀区", //请求城市

    "cityId": "101010200", //城市ID

    "parent": "北京市", //上级,一般是省份

    "updateTime": "09:02" //天气更新时间

}


其次是,该城市当前天气的空气相关指数。


"data": {

    "shidu": "32%", //湿度

    "pm25": 35.0, //pm2.5

    "pm10": 97.0, //pm10

    "quality": "良", //空气质量

    "wendu": "7", //温度

    "ganmao": "极少数敏感人群应减少户外活动", //感冒提醒(指数)

}


第三部分,该城市当前天气的温度风力等另外一些指数。


"forecast": [ //今天+未来14天

    {

        "date": "16", //日期

        "sunrise": "06: 28",

        "high": "高温 20.0℃",

        "low": "低温 2.0℃",

        "sunset": "18: 21",

        "aqi": 48.0, 

        "ymd": "2019-03-16", //年月日

        "week": "星期六",

        "fx": "西北风", //风向

        "fl": "3-4级", //风力

        "type": "晴",

        "notice": "愿你拥有比阳光明媚的心情"

    }

]


注:这个API接口返回值完整的示例。


拿到返回值之后,需要解析,并转换组装成我们想要的格式。


# 解析服务器返回的数据,具体可参考weather.json文件

index_cityInfo = weather.find("cityInfo")

index_cityId = weather.find("cityId")

index_shidu = weather.find("shidu")

index_pm25 = weather.find("pm25")

index_pm10 = weather.find("pm10")

index_quality = weather.find("quality")

index_wendu = weather.find("wendu")

index_ganmao = weather.find("ganmao")

index_forecast = weather.find("forecast")

index_ymd = weather.find("ymd", index_forecast)

index_week = weather.find("week", index_forecast)

index_sunset = weather.find("sunset", index_forecast)

index_high = weather.find("high", index_forecast)

index_low = weather.find("low", index_forecast)

index_fx = weather.find("fx", index_forecast)

index_fl = weather.find("fl", index_forecast)

index_aqi = weather.find("aqi", index_forecast)

index_type = weather.find("type", index_forecast)

index_notice = weather.find("notice", index_forecast)


这是我最终想达到的效果如下:


# 今日天气预报

# 年月日 + 星期 + 所在地城市

# 天气类型 + 风向 + 风力

# 温度范围(最低温度~最高温度)

# 污染指数:PM2.5/PM10/AQI

# 空气质量

# 当前温度 + 空气湿度

# Notice信息


转换化具体代码就是这样子的:


result = '今日天气预报' + '\n' \

    + weather[index_ymd + 6:index_week - 3] + " " \

    + weather[index_week + 7:index_fx - 3] + " " \

    + weather[index_cityInfo + 19:index_cityId - 3] + '\n' \

    + "天气: " + weather[index_type + 7:index_notice - 3] + " " \

    + weather[index_fx + 5:index_fl - 3] \

    + weather[index_fl + 5:index_type - 3] + '\n' \

    + "温度范围:" + weather[index_low + 9:index_sunset - 3] + " ~" \

    + weather[index_high + 10:index_low - 3] + '\n' \

    + "污染指数: PM2.5:" + weather[index_pm25 + 6:index_pm10 - 1] + "" \

    + "PM10:" + weather[index_pm10 + 6:index_quality - 1] + " " \

    + "AQI:" + weather[index_aqi + 5:index_ymd - 2] + '\n' \

    + "空气质量:" + weather[index_quality + 10:index_wendu - 3] + '\n' \

    + "当前温度:" + weather[index_wendu + 8:index_ganmao - 3] + " " \

    + "空气湿度:" + weather[index_shidu + 8:index_pm25 - 3] + '\n' \

    + weather[index_notice + 9:weather.find('}', index_notice) - 1]


这样我们的第一步,获取天气信息就完成了。接下来就是登录微信定时发送消息了。


2.2 登录微信定时发送消息

首先要登录微信,一行代码就搞定了。这里实际上是扫二维码登录了一个Web版的微信。


# 初始化机器人,扫码登陆微信,适用于Windows系统

bot = Bot()


# Linux系统,执行登陆请调用下面的这句

bot = Bot(console_qr=2, cache_path="botoo.pkl")

然后我们需要定义一个发送消息的函数,将获取并解析好的天气信息发送给指定微信好友。


# 调用get_weather函数

GW = get_weather()

# 填入你朋友的微信昵称,注意这里不是备注,也不是微信帐号

my_friend = bot.friends().search(u'一个昵称')[0]

# 发送微信消息

my_friend.send(u"早上好Y(^o^)Y,这里是今日份的天气信息请查收!")

my_friend.send(GW) 

my_friend.send(u"Have a Nice Day!")


# 每隔86400秒(1天),发送1次

t = Timer(86400, auto_send)

t.start()


接下来,你可以使用try…except…语句来实现在消息失败时发出告警:


try:

    '''此处为发送消息的代码,即上一段内容'''

except:

    # 你的微信昵称,注意这里不是备注,也不是微信帐号

    my_friend = bot.friends().search('&娴敲棋子&')[0]

    my_friend.send(u"报告老板,今日份的信息发送失败了!")


最后运行主函数,调用发送消息的函数即可。


# 调用函数进行消息发送

auto_send()


3 效果展示

这是我清晨收到的微信消息截图,看上去还不错。没白忙活


722
6楼 · 2021-09-10 10:06

你是要做一些网页输入的自动应用吧,这个根简单,推荐你去用下无敌点击狗这款软件即可。为什么这么说呢,因为无敌点击狗是一款灵活多样的脚本编排工具软件,支持批量自动填写,自动从文件导出和导入的。而且无敌点击狗软件的特点就是完全图形化脚本操作,操作简单,能实现各种复杂多样的鼠标点击和键盘等动作,达到解放双手的目的。 


果果宝贝
7楼 · 2021-09-11 14:02

自动化脚本,一般指自动化部署,或者自动化测试时,使用的脚本。比如Shell、Perl或者Python等脚本语言写的一些程序的帮助脚本。

这些脚本是帮助程序完成大面积部署或者监控的。直接完成业务的,就已经叫程序了。

image.png
image.pngimage.png

相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问