python上的免费免登录微信智能聊天机器人

目录

 一、准备

 二、开始

三、全部代码

四、总结


 一、准备

需要bs4库、requests库、time库(python自带)、wxauto库。

如果没有的话请用pip安装。

在本示例中,使用的是wxauto,所以只能识别桌面上显示的微信窗口,一旦微信窗口最小化,便无法使用。解决办法:可以在GitHub上找到wxauto的后台版本,下载安装即可。 

pip install bs4
pip install wxauto
pip install requests

 二、开始

1.先把各种库导入进来,requests是用来获取回答的,bs4用于解析返回的回答,wxauto用于沟通微信:

from requests import *
from bs4 import BeautifulSoup
from wxauto import WeChat
import time

2.规定一下wxauto库的简称,以便后期使用,在这里,我使用的简称是wx,当然,如果您想,只要符合变量规则就可以:

wx = WeChat()

3.python自动监视,当最后一条消息发生变动时触发命令,这样,当有新信息收到时就会自动运行下面的命令:

while True:#无限循环
    #比较,自动观察是否有新消息
    msg1 = wx.GetLastMessage
    time.sleep(3)
    msg2 = wx.GetLastMessage
    if msg1 != msg2:#当前后不同时,运行下面的命令

4.打印msg2会发现形成了一个列表,如('name','message','time'),我们只需要信息,所以只需要列表的第2位。之后再加上青云客的API,get到返回结果,再用BeautifulSoup解析得到的html,可以观察到返回的是一串html代码,选取字符串中的第38位到倒数第20位,最后使用wxauto的SendMsg发送即可。

        url1 = msg2[1]
        url2 = "http://api.qingyunke.com/api.php?key=free&appid=0&msg="
        url = url2 + url1
        ret = get(url)
        soup = str(BeautifulSoup(ret.text, 'lxml'))
        ans = str(soup[38:-20])
        wx.SendMsg("robot:" + ans)

 ·在本示例中,使用的wxauto里的函数,全部建立在您已经打开微信窗口的基础上,所以,您需要打开微信窗口,并且选择好与谁聊天,之后运行您编写的py代码,一旦Ta给您发消息,机器人便能自动在微信中回复。

 但是,我们会发现,当您的网速较慢时,可能会导致消息回复不及时,这时可能就会导致软件崩溃,所以,当您使用时可以再添加一个try命令,当网速过慢导致无法得到正确回复时,不会崩溃,这就适用于自己搭建一个简易服务器。

try:
    url1 = msg2[1]
    url2 = "http://api.qingyunke.com/api.php?key=free&appid=0&msg="
    url = url2 + url1
    ret = get(url)
    soup = str(BeautifulSoup(ret.text, 'lxml'))
    ans = str(soup[38:-20])
    wx.SendMsg("robot:" + ans)
except:
    wx.SendMsg("robot:与服务器通讯异常,请重试")

 当然,如果您搭建的服务器是基于windows的,也可以用pyinstaller打包成exe。这样便于使用,当然,也可以应用在其他无python环境的windows电脑上。

方法:

cmd:

cd (文件路径)
pyinstaller -F (文件名)

 之后就是等待pyinstaller自动打包即可,打包完成后的exe文件会被储存到dist文件夹中,直接复制出来即可。如果上面的步骤没有做错,那么dist文件夹中只会有一个.exe文件,如果出现了许多文件,那就证明您在使用pyinstaller时没有加上-F(打包为单个文件)。


三、全部代码

from requests import *
from bs4 import BeautifulSoup
from wxauto import WeChat
import time

wx = WeChat()
while True:
    msg1 = wx.GetLastMessage
    time.sleep(3)
    msg2 = wx.GetLastMessage
    if msg1 != msg2:
        url1 = msg2[1]
        url2 = "http://api.qingyunke.com/api.php?key=free&appid=0&msg="
        url = url2 + url1
        ret = get(url)
        soup = str(BeautifulSoup(ret.text, 'lxml'))
        ans = str(soup[38:-20])
        wx.SendMsg("robot:" + ans)

2023.1.28 改进:

from requests import *
from bs4 import BeautifulSoup
from wxauto import WeChat
import time

wx = WeChat()
while True:
    msg1 = wx.GetLastMessage
    time.sleep(3)
    msg2 = wx.GetLastMessage
    if msg1 != msg2:
        url1 = msg2[1]
        url2 = "http://api.qingyunke.com/api.php?key=free&appid=0&msg="
        url = url2 + url1
        try:
            ret = get(url)
            soup = str(BeautifulSoup(ret.text, 'lxml'))
            ans = str(soup[38:-20])
            wx.SendMsg("robot:" + ans)
        except:
            wx.SendMsg("error")

四、总结

在本示例中,我们知道了一个新的python库--wxauto,同时,我们也知道了怎么get url,当然,本示例中的api您也可以用来开发一个新的代码,让它做更多有意义的事情。

你可能感兴趣的:(python,python,开发语言)