基于 Flask 及爬虫实现微信“讲笑话”机器人

news/2024/7/5 1:11:04 标签: python, 爬虫, 开发工具

图片描述

项目简介:本次课程是基于 Flask Web 框架开发的娱乐级别的微信公众号后台,学习并实践 python 编程,Flask Web 开发以及微信公众平台开发机器人的基本步骤。

本教程由bulabean发布在实验楼,完整教程及在线练习地址:基于 Flask 及爬虫实现微信娱乐机器人,可以直接在教程中下载代码使用demo。

一、课程介绍

1.1 课程简介

本次课程是基于 Flask 开发的微信公众号后台,提供机器人聊天功能,涉及到微信的公众平台开发知识。学习本课程的童鞋们,需要去申请一个微信的公众平台,最好是在能有自己的微信公众平台和80端口正常的IP地址情况下进行,可以即时看到演示效果。

实验目标包括以下三个方面:

  • 首先,肯定是正常运行,微信接口正常接入我们的服务器。

  • 其次,当用户发送文字,我们可以倒序送回。

  • 再者,只逆序回话,略显单调,额外添加一个讲笑话的功能,笑话内容通过爬虫获取。

1.2 开发工具

实验楼提供的环境中只提供了 vimgedit 编写 Python 代码,如有需要可以选择其他的编辑工具。

vim / gedit:自带编辑器,无需安装

IDLE:python的编译器,推荐新手使用
实验楼中安装方法:sudo apt-get install idle

sublime:需要学习学习
安装方法:只能自己下载安装包安装

1.3 知识点

本实验课程将学习并实践以下知识点:

  • 微信公众平台参数配置

  • Python 的编程基础

  • Flask 的基本知识(看懂官网的几个小例子)

  • Http 的基本知识(GET和POST请求,80端口)

  • Web 服务网络知识

1.4 实验效果图

本项目完成后,可以实现下面的机器人对话效果,自动用在网络上爬取的笑话内容回复用户的 笑话 文本。

在实验楼中的运行效果:

shiyanlou-run

机器人对话效果图:

笑话,哈~哈~哈

1.5 实验注意事项

介于微信公众平台的后台配置,服务器地址只能是80端口或者443端口,必须以 http://https:// 开头,分别对应80端口和443端口。

最理想的方法是去云服务买个云主机,搭建一个自己的服务器,如果仅仅是为了学习,可以在本地主机或实验楼的环境中使用 ngrok 进行内网穿透,将内部主机通过一个域名作为服务器提供出去。

二、ngrok 内网穿透配置

注意:如果你有自己的独立服务器,可以忽略本节内容。

ngrok 官网地址如下:

  • 地址链接

ngrok 简介内容:

由于开发Web项目,经常需要将本地部署的网站让外网能直接访问到,最便捷的做法当然是在ADSL路由器上直接做端口映射,很不幸大部分运营商都屏蔽了80等常用端口,曾经的做法是在公网一台VPS上架设OpenVPN,将笔记本和VPS连到一个虚拟局域网,再用iptables做端口转发来达到目的,虽然可行,但速度比较慢,由于线路不稳定造成掉线几率较高。偶然发现还有个叫ngrok的神器专门做了这件事,不但提供了一个在外网能够安全的访问内网Web主机,还能捕获所有请求的http内容,方便调试,甚至还支持tcp层端口映射,不局限于某一特定的服务。支持Mac OS X,Linux,Windows平台。

国内使用 ngrok,最好使用国内的服务器,推荐一个 ngrok-sunny,下面介介绍下 ngrok 基本配置的步骤:

  • 注册账号,得到ngrok的Token

  • 下载你需要的Ngrok版本,解压

  • 修改ngrok.cfg配置文件,修改token参数,其余的基本可以不动

  • 运行适合自己平台的执行命令

  • 随机就会显示登陆成功,否则显示失败

ngrok 配置截图:

ngrok配置

配置完成,运行成功之后的输出内容:

Tunnel Status                 online
Version                       1.6/1.5
Forwarding                    http://steven-mbp.ngrok.com -> 127.0.0.1:8080
Forwarding                    https://steven-mbp.ngrok.com -> 127.0.0.1:8080
Web Interface                 127.0.0.1:4040
# Conn                        16
Avg Conn Time                 558ms

这里显示映射到本机的8080端口,所以我们的程序也需要监听8080端口。

三、微信公众号配置

微信公众号申请后,需要进行如下图所示的配置:

WeChat

其中每一项的详细介绍:

  • URL 是服务器地址,我的服务器 IP 是 120.27.51.6,URL 匹配是 /wechat,头部需要加入 http://

  • Token 是自己填写,传输过程不传输 Token,需要自己在代码中写入

  • EncodingAESKey 也已自己填,也可以点随机输入

  • 加密方式:建议明文或者兼容模式

  • 配置完成过后,点击提交。

提交后可能的情况处理:

  • 提示提交成功则一切正常。

  • 提示URL请求超时,可能是网络好的暂时没通,或者是网络没有配置好。

  • 提示Token错误,则是网络通过但是程序中的Token和服务器中配置的Token不一致,请调试程序。

注意 URL 需要设置成你自己的服务器地址或 ngrok 的地址。

四、项目实现

本项目的详细教程、完整代码及demo测试,可在实验楼中查看并在线完成。
更多Python经典项目:Python全部-课程


http://www.niftyadmin.cn/n/547276.html

相关文章

关于加载外部SWF文件的声音控制

声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息。 本文链接:http://blog.csdn.net/li_007/archive/2009/03/30/4037090.aspx 开拓进取的小乌龟------->CSDN点滴点点滴滴Blog 今天加载了一个有声音的swf&#xf…

计算机操作系统中有三个用户进程,计算机操作系统三章习题答案.doc

第三章 处理机调度与死锁030110011020101进程调度是从 选择一个进程投入运行。A.就绪队列B.等待队列C.作业后备队列D.提交队列030110011020100A030110022020101支持多道程序设计的操作系统在运行过程中,不断地选择新进…

The unique identifier of the win32 class is the class name

The unique identifier of the win32 class is the class name in one processcode:转载于:https://www.cnblogs.com/LittleFox/archive/2009/04/07/1431110.html

【转】你真的了解word-wrap和word-break的区别吗?

原文在这里: http://www.cnblogs.com/2050/archive/2012/08/10/2632256.html

电大计算机专业软件工程试题,2021国家开放大学电大本科《软件工程》期末试题及答案(试卷号:1260)...

2021国家开放大学电大本科《软件工程》期末试题及答案(试卷号:1260) 一、选择题,请从四个可选项中选择正确答案。(60分,每题3分) 1.可行性研究的主要任务是( )。A. 确定系统做什么 B.确定性能 C.确定功能 D…

delphi获取当前计算机所有盘符

GetDriveType(路径) 判断一个磁盘驱动器的类型 返回一个整数 0 驱动器类型不确定 1 系统目录不存在 2 DRIVE_REMOVABLE 是可移动驱动器 3 DRIVE_FIXED 是固定驱动器 4 DRIVE_REMOTE 是网络驱动器 5 DRIVE_CDROM 是CD-ROM驱动器 6 DRIVE_RAMDISK 是虚拟驱动器 functiongetP…

TIME_WAIT状态

(转)TIME_WAIT状态根据TCP协议定义的4次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的…

基于web的计算机配件销售系统,javaweb电脑配件销售管理系统

今天记录的项目是基于javaweb的电脑配件销售管理系统,基于javaweb的电脑配件销售管理系统项目是这么回事:采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。基于javaweb的电脑配件销售管理系统…