python定时发信息给女友
Posted Ivy丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的压力
以上是关于python定时发信息给女友的主要内容,如果未能解决你的问题,请参考以下文章
小学妹半夜发信息给我:怎样可以在暑假不花一分钱,把计算机证拿到手?计算机等级备考攻略大总结
小学妹半夜发信息给我:怎样可以在暑假不花一分钱,把计算机证拿到手?计算机等级备考攻略大总结
小学妹半夜发信息给我:怎样可以在暑假不花一分钱,把计算机证拿到手?计算机等级备考攻略大总结