python定时发信息给女友

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

    • 首先得要有个女朋友

    

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

    1 from wxpy import *
    2
    3
    4 def login():
    5     bot = Bot(cache_path=True)
    6     my_lover = bot.friends().search(‘夏叶‘)[0]
    7     return my_lover

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

  • 去天气网爬取网页数据,将关于天气的信息筛选下来,整合成消息字符串

     1 import requests
     2 from lxml import etree
     3
     4
     5 def get_page(url):
     6     r = requests.get(url)
     7     r.encoding = r.apparent_encoding
     8     return r.text if r.status_code == 200 else None
     9
    10
    11 def parse_page(html):
    12     html = etree.HTML(html)
    13     forecasts = html.xpath(‘/html/body/div[8]/div[1]/div[1]/div[2]/ul/li/a[1]/@title‘)
    14     forecasts = ‘\n‘.join(forecasts)
    15     keys = html.xpath(‘/html/body/div[8]/div[2]/div[6]/ul/li/b/text()‘)
    16     values = html.xpath(‘/html/body/div[8]/div[2]/div[6]/ul/li/a/p/text()‘)
    17     day_info = {i: values[keys.index(i)] for i in keys}
    18     message = ‘青哥哥今日提醒:\n\n‘ + ‘南京今日生活指数:\n‘ + ‘\n‘.join(
    19         [‘{}: {}‘.format(i, day_info[i]) for i in day_info]) + ‘\n‘ * 3 + ‘南京主要地区天气预报:\n‘ + forecasts
    20     return message

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

  • 获取当前时间和设置闹钟

     1 from datetime import datetime
     2
     3
     4 def get_time():
     5     time = datetime.now().strftime(‘%H:%M:%S‘)
     6     return time
     7
     8
     9 clock = ‘06:00:0{}‘  # 设置启动时间
    10 interval = 3  # 设置时间间隔
    11 time_zone = [clock.format(i) for i in range(interval)]

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

  • 主函数发送消息

    1 def main(my_lover):
    2     url = ‘http://www.tianqi.com/nanjing/‘
    3     html = get_page(url)
    4     message = parse_page(html)
    5     my_lover.send(message)

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

  • 判断时间,最后的完整代码

     1 from time import sleep
     2 from datetime import datetime
     3 from wxpy import *
     4 import requests
     5 from lxml import etree
     6
     7
     8 def login():
     9     bot = Bot(cache_path=True)
    10     my_lover = bot.friends().search(‘夏叶‘)[0]
    11     return my_lover
    12
    13
    14 def get_page(url):
    15     r = requests.get(url)
    16     r.encoding = r.apparent_encoding
    17     return r.text if r.status_code == 200 else None
    18
    19
    20 def parse_page(html):
    21     html = etree.HTML(html)
    22     forecasts = html.xpath(‘/html/body/div[8]/div[1]/div[1]/div[2]/ul/li/a[1]/@title‘)
    23     forecasts = ‘\n‘.join(forecasts)
    24     keys = html.xpath(‘/html/body/div[8]/div[2]/div[6]/ul/li/b/text()‘)
    25     values = html.xpath(‘/html/body/div[8]/div[2]/div[6]/ul/li/a/p/text()‘)
    26     day_info = {i: values[keys.index(i)] for i in keys}
    27     message = ‘青哥哥今日提醒:\n\n‘ + ‘南京今日生活指数:\n‘ + ‘\n‘.join(
    28         [‘{}: {}‘.format(i, day_info[i]) for i in day_info]) + ‘\n‘ * 3 + ‘南京主要地区天气预报:\n‘ + forecasts
    29     return message
    30
    31
    32 def get_time():
    33     time = datetime.now().strftime(‘%H:%M:%S‘)
    34     return time
    35
    36
    37 clock = ‘06:00:0{}‘  # 设置启动时间
    38 interval = 3  # 设置时间间隔
    39 time_zone = [clock.format(i) for i in range(interval)]
    40
    41
    42 def main(my_lover):
    43     url = ‘http://www.tianqi.com/nanjing/‘
    44     html = get_page(url)
    45     message = parse_page(html)
    46     my_lover.send(message)
    47
    48
    49 if __name__ == ‘__main__‘:
    50     my_lover = login()
    51     print(‘waiting......‘)
    52     while True:
    53         time = get_time()
    54         if time in time_zone:
    55             main(my_lover)
    56             print(time)
    57             sleep(interval)
    58         sleep(1)  # 程序休眠一秒,减少cpu的压力

原文地址:https://www.cnblogs.com/ivy-blogs/p/10687037.html

时间: 2024-08-15 00:57:11

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

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

利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考资料了哟 实现的功能:1.可以保存微信的消息,包括群聊和好友(文字/视频/语音/图片)2.在群里@自己,可以调用图灵机器人的API进行文字回复(类似于机器人)3.调用定时任务,在指定时间发送消息至某人 需要了解的基础:1.python基础2.mysql基础3.redis基础 实现效果如下: 只需要在

python定时杀进程

python定时杀进程 之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WebDriverWait设置最长等待时间无效.用firefox替换phantomjs无改善 因为这个脚本不会长期使用,因此采取临时办法,新开一个子线程固定周期杀死phantomjs进程,这样selenium就会在block最多不超过此周期后返回.当然在爬虫脚本中做一些微调防止部分url被跳过 定时执行任务采用sched模块,很多人将其

关于定时发短信业务的讨论

关于定时发短信业务的讨论 事情的起因 需求:在每次线下活动的开始的前一天晚上七点给报名参加价值研习社的用户发一条通知短信用户记得准时参加活动. 备注:因为我们的业务并发不是很大,所以很多场景并没有考虑到并发情况下的一些问题,这个需求正好通过crontab执行,并且加上服务器的自动弹性伸缩,所以相当于模拟了一次并发的业务场景. 先简单介绍一下数据库的表结构: 这几个方案都依赖每天晚上七点执行一次corntab. 方案1 根据开讲时间查询活动表是否有满足条件的线下活动,如果有的话,再通过活动id关联

去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码

从偏好设置中读取值: 打电话代码: 发信息代码: 打印沙盒路径代码: 应用程序之间跳转代码: 跳转到苹果商店代码: 去除警告代码: 根据字符串名称转换成相对应方法的代码: #import "SZMSettingsCell.h" @implementation SZMSettingsCell //选择不同的cell类型 + (UITableViewCellStyle)cellStyleWithDict:(NSDictionary *)dict{ UITableViewCellStyle

Python定时返回网址状态码&&网页内容是否为json数据

#!/usr/bin/env python#-*- coding:utf:8 -*- import requests,sys,os,time # 判断传值数知否匹配if len(sys.argv) == 3:passelse:    print 'Usage: %s <monitoring_name> <interval_time>'%(sys.argv[0])    sys.exit(2) url = 'url地址' # 覆盖存放检测值文件def successful_state

Winform调用QQ发信息并且开机启动 (开源)

前言 公司CS系统需要加入启动qq从winform调用qq聊天窗口的功能,前提是需要将聊天者的QQ号码作为参数传递到函数中,一直没有搞过,正好很感兴趣,就折腾,Winform调用qq,我想肯定是需要一些编码思路,下面列出编码前思路图 检查QQ安装后在注册表中的具体路径 根据注册表找到调用QQ程序的exe完整路径(Timwp.exe) 启动,达到winform调用QQ的要求 先看简单测试界面 步骤1 找到QQ的注册表路径,经过百度之后分析得到思路,正确的路径 32位QQ安装后注册表路径SOFTWA

python 获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判断: >&

python实现发邮件(sendmail.py )

#!/usr/bin/python #-*-coding:utf-8-*- #-*-coding:utf-8-*- #filename :sendmail.py import sys import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email import Utils imp

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

转:http://blog.csdn.net/hzaccp3/article/details/19964655 需求:  通过http方式,向openfire客户端发信息(非XMPP协议)openfire发送信息(只发信息)通常使用smack等XMPP客户端来实现,但有时有些客户端不想使用smack,如android.web或非java客户端.此时可以给openfire服务器开一个接口,并且能通过http或service方式调用,这样就可以不用考虑客户端的类型了.当然,这只是做最简单的发送信息