博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Python + Wxpy 为女友搭建简单微信机器人
阅读量:7167 次
发布时间:2019-06-29

本文共 7197 字,大约阅读时间需要 23 分钟。

因为之前做了一个可以定时发送天气预报的程序,

最近又想到折腾,做了一个更加详细的版本。但是需要主动操作

具体操作看图。

部分代码:

#coding=utf8import requestsfrom requests import exceptionsfrom urllib.request import urlopenfrom bs4 import BeautifulSoupfrom urllib.parse import urlencodefrom threading import Timerimport refrom wxpy import *import  scheduleimport  timeimport httpimport  json import datetimeimport randombot = Bot(cache_path=True,console_qr = 1)myself = bot.selfbot.enable_puid('wxpy_puid.pkl')tuling = Tuling(api_key='换成自己的图片key')group = bot.groups().search(u'Test')shgroup = bot.groups().search('伐木累?')friends = bot.friends().search(u'Lie')msgText = "Helo!  回复'功能'获取对应功能\n1.天气(例:苏州天气)\n2.今日nba(注:今日所有比赛结果)\n3.今日黄历\n4.每日一句\n5.开启机器人(关闭机器人)\n6.今日古诗词\n7.每日阅读\n8.历史上的今天\n9.nba排名(注:当日东西部排名)\n10.新闻\n          1.头条新闻\n          2.社会新闻\n          3.娱乐新闻\n          4.体育新闻\n11.星座运势(例如:天秤座)"  #任意回复获取的菜单newText = "你可以这样回复: \n1.头条新闻\n2.社会新闻\n3.娱乐新闻\n4.体育新闻"def get_now_weather(city):    header = {        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',        'Accept-Encoding': 'gzip, deflate',        'Accept-Language': 'zh-CN,zh;q=0.8',        'Connection': 'keep-alive',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'    }    url = 'https://free-api.heweather.com/s6/weather/now?location='+city+'&key=换成自己的聚合数据key'    PMurl = 'https://free-api.heweather.com/s6/air/now?parameters&location='+city+'&key=换成自己的和风key'    # 设定超时时间,防止被网站认为是爬虫    timeout = random.choice(range(80, 180))    rep = requests.get(url, headers=header, timeout=timeout)    pm = requests.get(PMurl, headers=header, timeout=timeout)    result = ''    temp = rep.json()    temp = temp['HeWeather6'][0]    update = temp['update']    now = temp['now']    nowTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')    pm = pm.json()    pm = pm['HeWeather6'][0]    print(now)    airnow = pm['air_now_city']    result = city +  '实时天气预报-' + '\n'\    + '更新时间:'+ update['loc'] + '\n'\    + '          当前天气:'+ now['cond_txt'] + '\n'\    + '          当前温度:'+ now['tmp'] + '°C' + '\n'\    + '          体感温度:'+ now['fl'] + '°C' + '\n'\    + '          风向:'+ now['wind_dir'] + ' ' + now['wind_sc'] + '级 '+ now['wind_spd'] + '公里/小时'+ '\n'\    + '          相对湿度:'+ now['hum'] + '%' + '\n'\    + '          降水量:'+ now['pcpn'] + 'ml' + '\n'\    + '          能见度:'+ now['vis'] + '公里' + '\n'\    + '          云量:'+ now['cloud']  + '\n'\    + '-----------------------------------' + '\n'\    + '当前空气质量:'+'\n'\    + '          空气质量指数:'+ airnow['aqi']+'\n'\    + '          主要污染物:'+ airnow['main']+'\n'\    + '          空气质量:'+ airnow['qlty']+'\n'\    + '          二氧化氮指数:'+ airnow['no2']+'\n'\    + '          二氧化硫指数:'+ airnow['so2']+'\n'\    + '          一氧化碳指数:'+ airnow['co']+'\n'\    + '          pm10指数:'+ airnow['pm10']+'\n'\    + '          pm25指数:'+ airnow['pm25']+'\n'\    + '          臭氧指数:'+ airnow['o3']+'\n'    result =  result + '发送时间:' +  nowTime + '\n'    return resultdef get_news(type):    header = {        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',        'Accept-Encoding': 'gzip, deflate',        'Accept-Language': 'zh-CN,zh;q=0.8',        'Connection': 'keep-alive',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'    }    url = 'http://v.juhe.cn/toutiao/index?type='+str(type)+'&key=换成自己的聚合数据key'    timeout = random.choice(range(80, 180))    rep = requests.get(url, headers=header, timeout=timeout)    data = json.loads(rep.text)    data = data['result']    data = data['data']    item = []    obj = {}    html = '今日'+str(type)+'新闻:'+ '\n'    for i in data:        html = html + '标题:' + i['title'] + '\n'\                + '链接:' + i['url'] + '\n'\                + '分类:' + i['category'] + '\n'\                + '来自:' + i['author_name'] + '\n'\                + '时间:' + i['date'] + '\n'\                + '-----------------------------------------------' + '\n' +'\n' \    return htmldef get_star(name):    header = {        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',        'Accept-Encoding': 'gzip, deflate',        'Accept-Language': 'zh-CN,zh;q=0.8',        'Connection': 'keep-alive',        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'    }    url = 'http://web.juhe.cn:8080/constellation/getAll?consName='+str(name)+'&type=today&key=换成自己的聚合数据key'    timeout = random.choice(range(80, 180))    rep = requests.get(url, headers=header, timeout=timeout)    data = json.loads(rep.text)    starhtml = '今日'+str(name)+'运势:'+ '\n'\        + '          综合指数:' + data['all'] + '\n'\        + '          幸运色:' + data['color'] + '\n'\        + '          健康指数:' + data['health'] + '\n'\        + '          爱情指数:' + data['love'] + '\n'\        + '          财运指数:' + data['money'] + '\n'\        + '          速配星座:' + data['QFriend'] + '\n'\        + '          工作指数:' + data['work'] + '\n'\        + '          今日概述:' + data['summary'] + '\n'\    return starhtmldef get_nba():    resp = urlopen('https://m.hupu.com/nba/game')    soup = BeautifulSoup(resp,'html.parser')    tagToday = soup.find('section',class_="match-today")    nbaHtml = '今日NBA比赛结果:' + '\n' + '\n'    for tag in tagToday.find_all('a', class_='match-wrap'):         nbaHtml = nbaHtml + tag.find('div', class_='away-team').span.get_text() + '    ' + tag.find('strong', class_='').span.get_text() + '    ' + tag.find('div', class_='home-team').span.get_text() + '  (' + tag.find('div', class_='match-status-txt').get_text() +')' + '\n'    return nbaHtml  def get_rank():    resp = urlopen('https://m.hupu.com/nba/stats')    soup = BeautifulSoup(resp,'html.parser')    east = soup.find_all('li',class_= "weast")[0]    west = soup.find_all('li',class_= "weast")[1]    rankHtml = '今日NBA东部排名:(1.排名  2.球队  3.胜负  4.胜负差  5.最近情况)' + '\n' + '\n'    for tag in east.find_all('li', class_=''):         list = tag.find('p', class_='right-data')        rankHtml = rankHtml + tag.find('span', class_='rank').get_text() + '. ' + tag.find('div', class_='').h1.get_text() + '    ' + list.find_all('span')[0].get_text() + '    ' + list.find_all('span')[1].get_text() +'    '+ list.find_all('span')[2].get_text() +'\n'    rankHtml = rankHtml + '\n' + '\n' + '---------------------------------------------' + '\n' + '\n'    rankHtml = rankHtml + '今日NBA西部排名:(1.排名  2.球队  3.胜负  4.胜负差  5.最近情况)' + '\n' + '\n'            for tag in west.find_all('li', class_=''):         list = tag.find('p', class_='right-data')        rankHtml = rankHtml + tag.find('span', class_='rank').get_text() + '. ' + tag.find('div', class_='').h1.get_text() + '    ' + list.find_all('span')[0].get_text() + '    ' + list.find_all('span')[1].get_text() +'    '+ list.find_all('span')[2].get_text() +'\n'        return rankHtml   def invite(user):    print('4')    group =  bot.groups().search('cc')    group[0].add_members(user, use_invitation=True)@bot.register(msg_types=FRIENDS)@bot.register(group)@bot.register(shgroup,TEXT)@bot.register(friends)复制代码

喜欢的可以加微信 wex_5201314 验证信息【 py】 拉你进群体验 获取关注公众号 【故事胶片】 获取源码

或者直接扫描二维码

欢迎关注 公众号【小夭同学】

转载地址:http://bvxwm.baihongyu.com/

你可能感兴趣的文章
知识体系
查看>>
jquery把表单数据序列成json,支持多维数组
查看>>
virtualbox mac-debian共享文件夹
查看>>
[转载]当web配置文件 appSettings配置的东西越来越多时,可以拆开了
查看>>
int *i = new int;
查看>>
CCF计算机认证——字符串匹配问题(运行都正确,为什么提交后只给50分?)...
查看>>
POST提交的四种类型
查看>>
DataTable转List<T>
查看>>
安卓项目开发
查看>>
使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
查看>>
2019-06-11 Java学习日记之Bootstrap
查看>>
解决apache 443端口被占用
查看>>
PHP中PDO错误/异常(PDOException)处理
查看>>
中国科学院大学生创新实践训练计划-
查看>>
洛谷——P1294 高手去散步
查看>>
python正则表达式
查看>>
Blob写入文件
查看>>
Again Stone Game
查看>>
MySQL 5.7.9修改root密码以及新特性
查看>>
HTML5 —— 属性
查看>>