• 第一步,也是最难的一部

    • 首先得要有个女朋友

    

  • 利用python的第三方库wxpy来登录微信,实现消息发送功能

     from wxpy import *
    
     def login():
    bot = Bot(cache_path=True)
    my_lover = bot.friends().search('夏叶')[0]
    return my_lover

    search方法接收一个昵称的字符串,它会返回一个查找到的所有条件的列表对象,我们这里只有这一个人,直接选第一个对象

  • 去天气网爬取网页数据,将关于天气的信息筛选下来,整合成消息字符串
     import requests
    from lxml import etree def get_page(url):
    r = requests.get(url)
    r.encoding = r.apparent_encoding
    return r.text if r.status_code == 200 else None def parse_page(html):
    html = etree.HTML(html)
    forecasts = html.xpath('/html/body/div[8]/div[1]/div[1]/div[2]/ul/li/a[1]/@title')
    forecasts = '\n'.join(forecasts)
    keys = html.xpath('/html/body/div[8]/div[2]/div[6]/ul/li/b/text()')
    values = html.xpath('/html/body/div[8]/div[2]/div[6]/ul/li/a/p/text()')
    day_info = {i: values[keys.index(i)] for i in keys}
    message = '青哥哥今日提醒:\n\n' + '南京今日生活指数:\n' + '\n'.join(
    ['{}: {}'.format(i, day_info[i]) for i in day_info]) + '\n' * 3 + '南京主要地区天气预报:\n' + forecasts
    return message

    爬虫库使用的是requests,解析库用的是xpath,最后将字符串拼接,返回消息对象

  • 获取当前时间和设置闹钟
     from datetime import datetime
    
     def get_time():
    time = datetime.now().strftime('%H:%M:%S')
    return time clock = '06:00:0{}' # 设置启动时间
    interval = 3 # 设置时间间隔
    time_zone = [clock.format(i) for i in range(interval)]

    防止电脑性能过差或cpu使用率过高导致的时间漏缺,设置一下时间间隔,我这里设置的是三秒,最后将设置时间区间

  • 主函数发送消息
     def main(my_lover):
    url = 'http://www.tianqi.com/nanjing/'
    html = get_page(url)
    message = parse_page(html)
    my_lover.send(message)

    不同城市的url可以去天气网自定义,一般网页的结构是不会变得

  • 判断时间,最后的完整代码
     from time import sleep
    from datetime import datetime
    from wxpy import *
    import requests
    from lxml import etree def login():
    bot = Bot(cache_path=True)
    my_lover = bot.friends().search('夏叶')[0]
    return my_lover def get_page(url):
    r = requests.get(url)
    r.encoding = r.apparent_encoding
    return r.text if r.status_code == 200 else None def parse_page(html):
    html = etree.HTML(html)
    forecasts = html.xpath('/html/body/div[8]/div[1]/div[1]/div[2]/ul/li/a[1]/@title')
    forecasts = '\n'.join(forecasts)
    keys = html.xpath('/html/body/div[8]/div[2]/div[6]/ul/li/b/text()')
    values = html.xpath('/html/body/div[8]/div[2]/div[6]/ul/li/a/p/text()')
    day_info = {i: values[keys.index(i)] for i in keys}
    message = '青哥哥今日提醒:\n\n' + '南京今日生活指数:\n' + '\n'.join(
    ['{}: {}'.format(i, day_info[i]) for i in day_info]) + '\n' * 3 + '南京主要地区天气预报:\n' + forecasts
    return message def get_time():
    time = datetime.now().strftime('%H:%M:%S')
    return time clock = '06:00:0{}' # 设置启动时间
    interval = 3 # 设置时间间隔
    time_zone = [clock.format(i) for i in range(interval)] def main(my_lover):
    url = 'http://www.tianqi.com/nanjing/'
    html = get_page(url)
    message = parse_page(html)
    my_lover.send(message) if __name__ == '__main__':
    my_lover = login()
    print('waiting......')
    while True:
    time = get_time()
    if time in time_zone:
    main(my_lover)
    print(time)
    sleep(interval)
    sleep(1) # 程序休眠一秒,减少cpu的压力

python定时发信息给女友的更多相关文章

  1. 利用python itchat给女朋友定时发信息

    利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考 ...

  2. Python定时框架 Apscheduler 详解【转】

    内容来自网络: https://www.cnblogs.com/luxiaojun/p/6567132.html 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序, ...

  3. 用python定时文章发布wordpress

    用python定时文章发布wordpress: 流程: 采集 - 筛选文章 - wordpress文章发布. wordpress文章发布代码:python利用模块xmlrpclib发布文章非常便捷,省 ...

  4. 新发现:AirDroid(用Web端控制自己的手机发信息)

    http://web.airdroid.com/ 好多功能呀,有空研究研究 http://jingyan.baidu.com/article/b24f6c82cd4ade86bfe5daf3.html ...

  5. python定时利用QQ邮件发送天气预报

    大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.c ...

  6. netty04(重点来了、指定某个客户端发信息或者群发)小声嘀咕~~我也是从零开始学得、、、想学习netty的又不知道怎么下手的童鞋们~~

    还是和上几篇一样,先给出前面笔记的连接,有没看的可以去看看再来! netty01   . netty02  .netty03 看到这里.你基本上可以使用netty接受信息和根据对应的信息返回信息了 接 ...

  7. (转)openfire插件开发(三)通过http方式向openfire客户端发信息

    转:http://blog.csdn.net/hzaccp3/article/details/19964655 需求:  通过http方式,向openfire客户端发信息(非XMPP协议)openfi ...

  8. 网络编程(client发信息给server)

    client发信息给server

  9. 用python获取ip信息

    1.138网站 http://user.ip138.com/ip/首次注册后赠送1000次请求,API接口请求格式如下,必须要有token值 import httplib2 from urllib.p ...

随机推荐

  1. Spring Boot 2集成Redis

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.redis是一个key-value存储系统,支持存储的valu ...

  2. python from entry to abandon

    学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...

  3. Asp.net MVC5 学习笔记

    控制器(controller)主要负责响应用户的输入,并且在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理,以及对相关视图(View)输出数据的 ...

  4. 《温故而知新》JAVA基础四

    类的封装 定义:将类的一些信息隐藏起来,不允许外部的程序直接的访问,而是通过该类提供的一些方法来获取 好处:只能通过特定的法方法访问数据,保护了数据, 实现封装的步骤: 修改属性的可见性:(一般类属性 ...

  5. 【三】jquery之选择器

    转自:https://www.cnblogs.com/youfeng365/p/5846650.html jquery参考手册:http://jquery.cuishifeng.cn/index.ht ...

  6. IOS 下载app

    ---------------------------------------------------------------------------------------------------- ...

  7. The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.

    编译报错:The android.dexOptions.incremental property is deprecated and it has no effect on the build pro ...

  8. Luffy之购物车页面搭建

    前面已经将一些课程加入购物车中,并保存到了后端的redis数据库中,此时做购物车页面时,我们需要将在前端向后端发送请求,用来获取数据数据 购物车页面 1.首先后端要将数据构建好,后端视图函数如下代码: ...

  9. MongoDB 教程(八):查询文档、条件操作符

    MongoDB 查询文档 MongoDB 查询文档使用 find() 方法. find() 方法以非结构化的方式来显示所有文档. MongoDB 查询数据的语法格式如下: db.collection. ...

  10. 两个非空的<div>元素inline-block化后出现空白部分解决办法

    在涉及到两个<div>元素并列显示的效果时,一般有两种方法: 1.使用float元素让元素并联显示: 2.将块状的<div>元素display设置为inline-block,使 ...