最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容。于是开始了分析思路。博主是采用了多线程群发,因为微信对频繁发送消息过快还会出现发送失败的问题,因此还要加入time.sleep(1),当然时间根据自身情况自己定咯。本想把接入写诗机器人,想想自己的渣电脑于是便放弃了,感兴趣的可以尝试一下。做完会有不少收获希望对你有帮助。

(1)我们要找个每天定时更新天气预报的网站,和一个更新励志语录的网站。当然如果你想更新其他内容,相信高智商的你这些都是小意思啦。博主是随便找了2个网站进行抓取。

第一步:抓取某网站天气预报信息,为我所用,因温度气候和生活指数在两个页面,于是将2个页面的数据抓取并进行整合:

这里抓取第一个页面内容,为温度,风向,日期,随便把第二天天气的也一并抓取了:

defget_content(self, html_str):

html =etree.HTML(html_str)

weather_ts = html.xpath("//div[@id='7d']/ul")

today_w = ''tomorrow_w = ''

for weather_t inweather_ts:

today_w += weather_t.xpath("./li[1]/h1/text()")[0] + ' 'today_w += weather_t.xpath("./li[1]/p[1]/text()")[0] + ' 'today_w += weather_t.xpath("./li[1]/p[2]/i/text()")[0] + ' 'today_w += '风向' + weather_t.xpath("./li[1]/p[3]/i/text()")[0]

tomorrow_w += weather_t.xpath("./li[2]/h1/text()")[0] + ' 'tomorrow_w += weather_t.xpath("./li[2]/p[1]/text()")[0] + ' 'tomorrow_w += '风向' + weather_t.xpath("./li[2]/p[3]/i/text()")[0]

all_w = today_w + '--' + tomorrow_w

return all_w

这里抓取第二页面内容,包括穿衣指数,紫外线指数:

defget_content1(self, html_str):

html =etree.HTML(html_str)

living_ins =html.xpath("//div[@class='livezs']/ul")

today_living = ''

for living_in inliving_ins:

today_living += living_in.xpath("./li[1]/span/text()")[0]

today_living += living_in.xpath("./li[1]/em/text()")[0] + ':'today_living += living_in.xpath("./li[1]/p/text()")[0] + ' 'today_living += living_in.xpath("./li[2]/a/em/text()")[0] + ' 'today_living += living_in.xpath("./li[2]/a/p/text()")[0] + ' 'today_living += living_in.xpath("./li[3]/em/text()")[0] + ':'today_living += living_in.xpath("./li[3]/p/text()")[0] + ' 'today_living += living_in.xpath("./li[4]/a/em/text()")[0] + ' 'today_living += living_in.xpath("./li[4]/a/p/text()")[0] + ' 'today_living += living_in.xpath("./li[6]/em/text()")[0] + ':'today_living += living_in.xpath("./li[6]/p/text()")[0]

return today_living

第二步:抓取某网经典唯美励志语录,为了每次发送或者回复都有信息感,博主抓取了10个数据,并进行随机返回:

defSoul():html =etree.HTML(res)

soul_sen = html.xpath("//div[@class='mLeft']")

soul_dict ={}

for soul_s insoul_sen:

soul_dict[1] = soul_s.xpath('./div[1]/div[2]/div[2]/text()')[0].strip()

soul_dict[2] = soul_s.xpath('./div[2]/div[2]/div[2]/text()')[0].strip()

soul_dict[3] = soul_s.xpath('./div[3]/div[2]/div[2]/text()')[0].strip()

soul_dict[4] = soul_s.xpath('./div[4]/div[2]/div[2]/text()')[0].strip()

soul_dict[5] = soul_s.xpath('./div[5]/div[2]/div[2]/text()')[0].strip()

soul_dict[6] = soul_s.xpath('./div[6]/div[2]/div[2]/text()')[0].strip()

soul_dict[7] = soul_s.xpath('./div[7]/div[2]/div[2]/text()')[0].strip()

soul_dict[8] = soul_s.xpath('./div[8]/div[2]/div[2]/text()')[0].strip()

soul_dict[9] = soul_s.xpath('./div[9]/div[2]/div[2]/text()')[0].strip()

soul_dict[10] = soul_s.xpath('./div[10]/div[2]/div[2]/text()')[0].strip()

i = random.randint(1,10)

return soul_dict[i]

(2)开始我们的重头戏,博主选择的是wxpy库,需要导入的库如下:

importtime

importjson

importrequests

importdatetime

importthreading

from queue importQueue

importschedule

importwxpy

from weather importWeatherSpider

from soul importSoul

bot = wxpy.Bot(cache_path=True)

现在先设置定时器,你可以设置多个的啦,博主只设置了早上:

schedule.every().day.at("10:01").do(send)

whileTrue:

schedule.run_pending()

time.sleep(1)

接着,我们先获取抓取内容,微信好友数据,引入创建多线程:

defsend():

wea_ls = '早上好,今天又是元气满满的一天\n' + WeatherSpider('101271610').run() +'您可以:'+ '\n回复"成都"获取成都天气\n回复"唯美"随机获取励志唯美语录'send_queue =Queue()

fris = bot.friends().search('') # 这里填空会向所有好友的发送,或者填你想要单独发送的人

for fri infris:

send_queue.put(fri)

t_list =[]

for i in range(3):

t_msend = threading.Thread(target=more_thread, args=(send_queue, wea_ls))

t_list.append(t_msend)

for t int_list:

t.setDaemon(True)

t.start()

for q in[send_queue]:

q.join()

print("主线程结束")

然后,开始向好友发送数据:

defmore_thread(send_queue, wea_ls):

whileTrue:

try:

friend =send_queue.get()

friend.send(wea_ls)

print("发送成功,a:",friend)

exceptException as ret:

time.sleep(1) # 如果你发送的好友很多,时间可以设置大一点,防止微信发送频繁,导致发送失败

continue # 这里不建议加continue,依个人微信情况而定吧

send_queue.task_done()

这里开始监听消息,并向朋友回送,一定要过滤掉群消息和公众号消息,具体为什么后面告诉你:

@bot.register()defrcv_message(msg):

sender=str(msg.sender)if '

returnnow= datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')#print(now)

recv_save = ''rev_save= '发送人:'+ sender +"内容:"+ msg.text + ' ' +nowprint(rev_save)

with open('wechat.md','a') as f: #这里我们要把朋友发送的消息进行保存,方便查看以免遗漏重要消息

f.write(rev_save)

f.write('\n')if msg.text == '成都':

wea_cd= '成都' + WeatherSpider('101270101').run()returnwea_cdelif msg.text == '唯美':returnSoul()else:try:returnrobot_tuling(msg.text)exceptException as ret:

fri_me= bot.friends().search('virtual')[0]

fri_me.send("发送错误,信息:%s" %ret)return ("主人不在所以我智商为0了,请尝试下回复(唯美)随机获取励志唯美语句")

下面接入图灵机器人,让实现智能聊天回复:

defrobot_tuling(text):

url= "http://www.tuling123.com/openapi/api"api_key= "a3c47b29c497e87ab0b6e566f32" #这里我已经修改,需要自己申请一个咯

payload ={"key": api_key,"info": text,

}

rec= requests.post(url, data=json.dumps(payload))

result=json.loads(rec.content)#print(result["text"])

if result["text"] == "亲爱的,当天请求次数已用完。":return "主人不在所以我智商为0了,尝试下回复(唯美)随机获取励志唯美语句"

return result["text"]

好了,所有工作完成,看看效果,记得屏蔽了公众号,不然会有下面效果:

关注公众号「互联网专栏」,后台回复:wechat,获取本文全套代码!

python自动抓取聊天群内容_python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送...相关推荐

  1. python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  2. 基于python以及AIUI WebSocket,WeChatPYAPI实现的微信聊天机器人

    基于python以及AIUI WebSocket,WeChatPYAPI实现的微信聊天机器人 做此文的目的首先是学习Markdown的用法哈哈哈哈,其实也是记录自己学习的一个过程. 以后我也会将自己在 ...

  3. wepy微信机器人:向好友推送爬取的公告

    文章目录 写在前面 做的什么 一些tips 1.爬虫部分 2.微信机器人转发消息 2.1机器人需求以及实现过程 2.2向好友发送推送 2.2.1得到一个好友列表 2.2.2遍历好友列表推送消息 3.微 ...

  4. python爬取论坛付费内容_Python进阶量化交易专栏场外篇20-爬虫抓取股票论坛帖子...

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  5. python爬取京东手机数据_Python数据爬虫学习笔记(21)爬取京东商品JSON信息并解析...

    一.需求:有一个通过抓包得到的京东商品的JSON链接,解析该JSON内容,并提取出特定id的商品价格p,json内容如下: jQuery923933([{"op":"75 ...

  6. python自动发邮件 百度网盘_python自动保存百度盘资源到百度盘中的实例代码

    本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然后保存到指定的目录中 全部代码如下: # -*-coding ...

  7. 【Python】uiautomation+openai构建基于chatGPT的微信聊天机器人

    目录 前言 一.uiautomation是什么? 二.openai怎么使用? 三.使用步骤 1.前期准备 2.引入库 3.主程序 4.演示效果 总结 前言 人工ai对话技术最近火热,相信很多人会想到做 ...

  8. js模拟群聊天php,jquery仿微信聊天界面实例分享

    本文主要为大家详细介绍了jquery仿微信聊天界面的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 首先看一下我们的效果图. 这个颜色可能搭配的有些不合适,但基本功能大 ...

  9. Python从编程零基础打造一款微信聊天自动回复机器人

    本教程的作用 零基础手把手教你打造一款微信自动回复机器人,零基础! 操作流程: 第一步:安装python环境,下载链接,下载好,一路next,默认安装. 第二步:打开命令行,(快捷键win(那个键上有 ...

最新文章

  1. Http Get 和 Post
  2. 在panel中显示一个新的form
  3. 腾讯GaiaStack容器平台负责人罗韩梅:All on GaiaStack
  4. react前端显示图片_在react里怎么引用图片
  5. jQuery中的函数汇总1
  6. 使用OctreeQuantizer提高gdi+绘图质量
  7. 图像拼图:HTML游戏
  8. Maven学习总结(51)——Maven 常用属性和常量说明
  9. Session 另一种用法,其实是一样的
  10. [转载] numpy.linalg.matrix_power 计算矩阵的次方
  11. Python爬虫项目分享一:《爬取周杰伦的歌曲清单》
  12. 告别2018:人间值得,你更值得!
  13. 《设计模式之禅》目录
  14. 电脑桌面图标不能正常显示解决办法
  15. P2P下载技术-BT协议与Magnet磁力链接
  16. html伪类选择器focus,了解CSS :focus-within伪类选择器
  17. Jest,karma结合Vue-test-utils的优秀文章
  18. Pandas 的melt函数解析
  19. 【k8s的持久化存储】PV、PVC、StorageClass讲解
  20. 微信小程序和百度的语音识别接口

热门文章

  1. QGIS之五自定义界面
  2. windows10安装vue.js
  3. 关于实习结束后的一些事
  4. 天下布魔哪些低星角色值得练?高性价比辅助力强低星卡推荐
  5. Ubuntu上查崩溃办法
  6. 华南理工大学电子商务系管科面试记录
  7. 以文件服务器为中央结点,电子商务概论案例第三章资料.ppt
  8. 亲子沟通技巧学前教育培训.pptx
  9. 多商户商城系统功能拆解17讲-平台端订单列表
  10. 对于一部分赴日IT人来说,日本语言学校是一个不错选择