精华内容
下载资源
问答
  • 主要介绍了基于springboot微信公众号开发(微信自动回复),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • java 微信自动回复功能开发

    千次阅读 2016-10-28 11:41:16
    java 微信自动回复功能开发 准备文件: JCE无限制权限策略文件,里面是对应jdk6和7的文件 官网下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html和...

    java 微信自动回复功能开发

    准备文件:

    JCE无限制权限策略文件,里面是对应jdk6和7的文件
    官网下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
    http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 

    下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。 

    如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security下覆盖原来文件,记得先备份。 

    如果安装了JDK,将两个jar文件也放到%JDK_HOME%\jre\lib\security下。 


    一、开发平台

    myeclipse 9 ,mysql 5.6 ,微信认证服务号。

    利用servlet技术开发微信自动回复功能。

    本人利用ant123映射,利用ant提供的二级域名,搭建本地开发平台进行开发。

    二、公众号设置:


    三、开发步骤

    1、编写servlet类,利用myeclipse 生成一个servlet类

      处理servlet类中的doget方法:

     处理servlet类中的dopost方法:


    2、编写service类

    2、编写CoreService类

    /**
    * 处理微信发来的请求

    * @param request
    * @return
    */
    public static String handleMessage(Map<String, String> requestMap)throws Exception{
    String respContent="";
    try {
    // 发送方帐号(open_id)
    String fromUserName = requestMap.get("FromUserName");
    // 公众帐号
    String toUserName = requestMap.get("ToUserName");
    // 消息类型
    String msgType = requestMap.get("MsgType");

    TextMessage tm =new TextMessage();
    tm.setToUserName(fromUserName);
    tm.setFromUserName(toUserName);
    tm.setCreateTime(new Date().getTime());
    tm.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
    // 文本消息
    if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
    String content = requestMap.get("Content");
    if (content.startsWith("人工客服")) {

    } else {
    respContent = "您发送的是文本消息!";
    }
    }
    // 图片消息
    else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
    respContent = "您发送的是图片消息!";
    }
    // 地理位置消息
    else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
    respContent = "您发送的是地理位置消息!";
    }
    // 链接消息
    else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
    respContent = "您发送的是链接消息!";
    }
    // 音频消息
    else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
    respContent = "您发送的是音频消息!";
    }
    // 事件推送
    else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
    // 事件类型
    String eventType = requestMap.get("Event");
    // 订阅
    if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
    String ticket = requestMap.get("Ticket");
    if (ticket != null && !"".equals(ticket)) {
    respContent = "谢谢您的关注!,你的ticket是:" + ticket;
    } else {
    respContent = "谢谢您的关注!";
    }


    }
    // 取消订阅
    else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
    // TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息
    }
    // 自定义菜单点击事件
    else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
    // TODO 自定义菜单权没有开放,暂不处理该类消息
    String eventKey = requestMap.get("EventKey");
    if ("language".equalsIgnoreCase(eventKey.trim())) {


    }
    } else if (eventType.equals("SCAN")) {
    String eventKey = requestMap.get("EventKey");
    String ticket = requestMap.get("Ticket");
    respContent = "你的ticket是:" + ticket;
    }
    }
    tm.setContent(respContent);
    return MessageUtil.textMessageToXml(tm); 
    } catch (Exception e) {
    e.printStackTrace();
    }
    return "";
    }

    四、说明

    经过以上编号代码步骤,及处理jdk的JCR无限制权限策略方法后,

    支持微信的明文模式和安全模式。


    五、总结

    本人利用时间开发java的微信自动回复功能,已取得满意的结果。

    下一步将在此代码的基础上,配合功能,完善系统。

    如有和我一样想学习的同仁,可与我联系,QQ22832054。

    展开全文
  • 微信自动回复机器人原理很简单,获取用户发送到后台的数据,然后调用机器人的api进行回复即可。我使用的茉莉机器人,官网地址如下: http://www.itpk.cn/ 茉莉机器人的api:http://www.itpk.cn/robot.php 接口...

    微信自动回复机器人原理很简单,获取用户发送到后台的数据,然后调用机器人的api进行回复即可。我使用的茉莉机器人,官网地址如下:
    http://www.itpk.cn/
    茉莉机器人的api:http://www.itpk.cn/robot.php
    接口比较简单,看看就会,我直接上源代码
    下面代码同样基于之前的微博,需要的可以去看一下:
    http://blog.csdn.net/zxxz5201314/article/details/76917107
    首先对用户发送的文本进行处理,特殊字段分别处理,同样Post请求:

    @SuppressWarnings("rawtypes")
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        PrintWriter writer = resp.getWriter();
        try {
            Map<String, String> map = MessageUtil.xmlToMap(req);
            String toUserName = map.get("ToUserName");
            String fromUserName = map.get("FromUserName");
            String msgType = map.get("MsgType");
            String content = map.get("Content");
            System.out.println(toUserName+fromUserName+msgType+content);
            String text = null;
            if ("text".equals(msgType)) {
                switch (content) {
                case "笑话":
                    Map maps1 = (Map)JSON.parse(ITPK.itpk("笑话"));
                    StringBuffer sb1 = new StringBuffer();
                    sb1.append("标题:"+maps1.get("title")+"\n");
                    sb1.append("内容:"+maps1.get("content"));
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, sb1.toString());
                    break;
                case "观音灵签":
                    Map maps2 = (Map)JSON.parse(ITPK.itpk("观音灵签"));
                    StringBuffer sb2 = new StringBuffer();
                    sb2.append("您抽取的是第"+maps2.get("number2")+"签\n");
                    sb2.append("签位:"+maps2.get("haohua")+"\n");
                    sb2.append("签语:"+maps2.get("qianyu")+"\n");
                    sb2.append("诗意:"+maps2.get("shiyi")+"\n");
                    sb2.append("解签:"+maps2.get("jieqian"));
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, sb2.toString());
                    break;
                case "月老灵签":
                    Map maps3 = (Map)JSON.parse(ITPK.itpk("月老灵签"));
                    StringBuffer sb3 = new StringBuffer();
                    sb3.append("您抽取的是第"+maps3.get("number2")+"签\n");
                    sb3.append("签位:"+maps3.get("haohua")+"\n");
                    sb3.append("签语:"+maps3.get("shiyi")+"\n");
                    sb3.append("解签:"+maps3.get("jieqian"));
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, sb3.toString());
                    break;
                case "财神爷灵签":
                    Map maps4 = (Map)JSON.parse(ITPK.itpk("财神爷灵签"));
                    StringBuffer sb4 = new StringBuffer();
    
                    sb4.append("您抽取的是第"+maps4.get("number2")+"签\n");
                    sb4.append("签语:"+maps4.get("qianyu")+"\n");
                    sb4.append("注释:"+maps4.get("zhushi")+"\n");
                    sb4.append("解签:"+maps4.get("jieqian")+"\n");
                    sb4.append("解说:"+maps4.get("jieshuo")+"\n");
                    sb4.append("婚姻:"+maps4.get("hunyin")+"\n");
                    sb4.append("事业:"+maps4.get("shiye")+"\n");
                    sb4.append("求财:"+maps4.get("qiucai"));
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, sb4.toString());
                    break;
                case "指令":
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, MessageUtil.mainMenu());
                    break;
                default:
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, ITPK.itpk(content));
                    break;
                }
            }else if (MessageUtil.Message_Event.equals(msgType)) {
                if ("subscribe".equals(map.get("Event"))) {
                    text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, MessageUtil.mainMenu());
                }
            }
            System.out.println(text);
            writer.print(text);
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            writer.close();
        }
    }

    茉莉机器人url组装类:

    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    
    public class ITPK {
    
        public static String api_key = "api_key";
        public static String api_secret = "api_secret";
    
        public static String itpk(String path){
            try {
                path = URLEncoder.encode(path, "utf-8");
            } catch (UnsupportedEncodingException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            String url = "http://i.itpk.cn/api.php?question="+path+"&api_key="+api_key+"&api_secret="+api_secret;
            return LordJson.loadJSON(url);
        }
    }

    json处理类:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class LordJson {
    
        public static String loadJSON(String url) {
            System.out.println(url);
            StringBuilder json = new StringBuilder();
            try {
                URL oracle = new URL(url);
                URLConnection yc = oracle.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        yc.getInputStream(),"utf-8"));//防止乱码
                String inputLine = null;
                while ((inputLine = in.readLine()) != null) {
                    json.append(inputLine);
                }
                in.close();
            } catch (MalformedURLException e) {
            } catch (IOException e) {
            }
            return json.toString();
        }
    }

    MessageUtil类:

    public class MessageUtil {
        public static String Message_Text = "text";
        public static String Message_News = "news";
        public static String Message_Image = "image";
        public static String Message_Voice = "voice";
        public static String Message_Video = "video";
        public static String Message_ShortVideo = "shortvideo";
        public static String Message_Location = "location";
        public static String Message_Link = "link";
        public static String Message_Event= "event";
        public static String Message_Event_Sub= "subscribe";
    
        /**
         * xml转map集合
         * @param request
         * @return
         * @throws IOException
         * @throws DocumentException
         */
    
        public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException{
            Map<String, String> map = new HashMap<String,String>();
    
            SAXReader reader = new SAXReader();
    
            InputStream is = request.getInputStream();
    
            Document document = reader.read(is);
    
            Element root = document.getRootElement();
    
            List<Element> list = root.elements();
    
            for (Element e:list) {
                map.put(e.getName(), e.getText());
            }
            is.close();
            return map;
        }
    
        /**
         * 将文本消息转换成xml
         * @param textMessage
         * @return
         */
        public static String textMessageToXml(TextMessage textMessage){
            XStream xStream = new XStream();
            xStream.alias("xml", textMessage.getClass());
            return xStream.toXML(textMessage);
        }
    
        /**
         * 将图片信息转换成xml
         * @param imageMessage
         * @return
         */
        public static String imageMessageToXml(ImageMessage imageMessage){
            XStream xStream = new XStream();
            xStream.alias("xml", imageMessage.getClass());
            return xStream.toXML(imageMessage);
        }
    
        /**
         *将图文消息转换成xml 
         * @param newsMessage
         * @return
         */
        public static String newsMessageToXml(NewsMessage newsMessage){
            XStream xStream = new XStream();
            xStream.alias("xml", newsMessage.getClass());
            xStream.alias("item", new News().getClass());
            return xStream.toXML(newsMessage);
        }
    
        public static String repluByImage(String toUserName,String fromUserName,String msgType,String mediaId){
            ImageMessage imageMessage = new ImageMessage();
            imageMessage.setToUserName(fromUserName);
            imageMessage.setFromUserName(toUserName);
            imageMessage.setCreateTime(new Date().getTime());
            Image image = new Image();
            image.setMediaId(mediaId);
            imageMessage.setImage(image);
            return MessageUtil.imageMessageToXml(imageMessage);
        }
    
        /**
         * 文本回复
         * @param toUserName
         * @param fromUserName
         * @param msgType
         * @param content
         * @return
         */
        public static String replyByKeyWord(String toUserName,String fromUserName,String msgType,String content){
            TextMessage message = new TextMessage();
            message.setFromUserName(toUserName);
            message.setToUserName(fromUserName);
            message.setMsgType(msgType);
            message.setCreateTime(new Date().getTime());
            message.setContent(content);
            return MessageUtil.textMessageToXml(message);
        }
        public static String mainMenu(){
            StringBuffer sb = new StringBuffer();
            sb.append("指令:\n");
            sb.append("地区天气 \n");
            sb.append("天气\n");
            sb.append("@tq您的ip地址\n");
            sb.append("@ip您的ip地址\n");
            sb.append("ip\n");
            sb.append("@qq要查询的QQ号码\n");
            sb.append("@lol英雄联盟大区--角色名称\n");
            sb.append("@sfz身份证号码\n");
            sb.append("@sjh手机号码\n");
            sb.append("@cy四字成语\n");
            sb.append("笑话\n");
            sb.append("观音灵签\n");
            sb.append("月老灵签\n");
            sb.append("财神爷灵签");
            return sb.toString();
        }
    }

    还有两个实体类:

    /**
     * 信息基础类
     * @author Administrator
     *
     */
    public class BaseMessage {
        private String ToUserName;
        private String FromUserName;
        private long CreateTime;
        private String MsgType;
        public String getToUserName() {
            return ToUserName;
        }
        public void setToUserName(String toUserName) {
            ToUserName = toUserName;
        }
        public String getFromUserName() {
            return FromUserName;
        }
        public void setFromUserName(String fromUserName) {
            FromUserName = fromUserName;
        }
        public long getCreateTime() {
            return CreateTime;
        }
        public void setCreateTime(long createTime) {
            CreateTime = createTime;
        }
        public String getMsgType() {
            return MsgType;
        }
        public void setMsgType(String msgType) {
            MsgType = msgType;
        }
    }
    /**
     * 文本信息类
     * @author Administrator
     *
     */
    public class TextMessage extends BaseMessage{
    
        private String Content;
        private long MsgId;
        public String getContent() {
            return Content;
        }
        public void setContent(String content) {
            Content = content;
        }
        public long getMsgId() {
            return MsgId;
        }
        public void setMsgId(long msgId) {
            MsgId = msgId;
        }
    }

    其中json传唤成map需要一个jar包,下载地址:
    http://download.csdn.net/detail/zxxz5201314/9926317

    展开全文
  • 一直以来PC版微信都没有自动回复功能,我花费了一些时间潜心研究了一下,最终做出来一个微信自动回复工具,本程序使用C++开发,希望可以帮助大家。
  • 1、图片超过5000限制,只能在微信公众平台上传好,然后通过调用素材列表接口去获取media_id来设置回复内容。 2、音频本来想采用和图片一样的方式,然后发现从公众...3、本来想着通过自动回复规则获取接口去获取微信...

    1、图片超过5000限制,只能在微信公众平台上传好,然后通过调用素材列表接口去获取media_id来设置回复内容。

    2、音频本来想采用和图片一样的方式,然后发现从公众平台后台上传好的音频,通过素材接口去获取回复给用户之后根本无法播放,又只能改成音频通过接口的方式上传,微信接口文档的说明是音频数量不能超过1000,音频应该用得相对较少,就不管它了。

    3、本来想着通过自动回复规则获取接口去获取微信公众后台添加好的回复规则,然后直接转给用户。这样可以省掉自己做个管理后台的麻烦。然后发现不行。在开启开发者模式的情况下,根本无法在微信公众号后台修改回复规则。不明为何如此,只能作罢。自己老老实实写个后台了。

    总结:积累经验:)

    转载于:https://www.cnblogs.com/justfantasy/p/5089106.html

    展开全文
  • 最近准备学习微信小程序开发,偶然间看到了python与微信互动的接口itchat,简单学习了下,感觉还挺有意思的,故写了篇基础文章供大家学习。itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。使用...

    最近准备学习微信小程序开发,偶然间看到了python与微信互动的接口itchat,简单学习了下,感觉还挺有意思的,故写了篇基础文章供大家学习。itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

    官网文档:http://itchat.readthedocs.io/zh/latest/

    本文主要讲解itchat扩展包的入门基础知识,包括:
    1.itchat安装及入门知识
    2.微信好友性别分析
    3.微信自动回复及发送图片
    4.获取微信签名并进行词云分析

    基础性文章,希望对您有所帮助,后面将结合舆情分析、朋友圈等接口进行更一步的讲解。如果文章中存在错误或不足之处,还请海涵~

    参考文章:
    https://zhuanlan.zhihu.com/p/26514576?group_id=839173221667446784
    https://www.cnblogs.com/jmmchina/p/6692149.html

    http://blog.csdn.net/qinyuanpei/article/details/79360703



    一. itchat安装及入门知识


    安装通过 pip install itchat 命令实现,如下图所示:


    安装成功之后通过 import itchat 进行导入。


    下面给出我们第一个简单的代码:
    # -*- coding:utf-8 -*-
    import itchat
    
    # 登录
    itchat.login()
    # 发送消息
    itchat.send(u'你好', 'filehelper')
    

    首先调用itchat.login()函数登录微信,再通过itchat.send(u'你好', 'filehelper')函数发送信息给微信的“文件传输助手(filehelper)”。注意,执行代码过程中会弹出一张二维码图片,我们通过手机扫一扫登录后才能获取我们微信及好友的信息。

      


    输出结果如下图所示,可以看到给自己发送了一个“你好”。



    下面给出另一段代码:

    #-*- coding:utf-8 -*-
    import itchat
    
    # 先登录
    itchat.login()
    
    # 获取好友列表
    friends = itchat.get_friends(update=True)[0:]
    print u"昵称", u"性别", u"省份", u"城市"
    for i in friends[0:]:
        print i["NickName"], i["Sex"], i["Province"], i["City"]
    
    这里最重要的代码是获取好友列表,代码如下:
        friends = itchat.get_friends(update=True)[0:] 

    再通过["NickName"]获取昵称、["Sex"]获取性别、["Province"]获取省份、["City"]获取城市。返回的结果如下所示,其中第一个friends[0]是作者本人,然后性别0表示未填写、1表示男性、2表示女性;省份和城市可以不设置。




    二. 微信好友性别分析


    下面直接给出对微信好友性别分析绘图的代码:

    #-*- coding:utf-8 -*-
    import itchat
    
    #获取好友列表
    itchat.login() #登录
    friends = itchat.get_friends(update=True)[0:]
    
    #初始化计数器
    male = 0
    female = 0
    other = 0
    
    #1男性,2女性,3未设定性别
    for i in friends[1:]: #列表里第一位是自己,所以从"自己"之后开始计算
        sex = i["Sex"]
        if sex == 1:
            male += 1
        elif sex == 2:
            female += 1
        else:
            other += 1
    #计算比例
    total = len(friends[1:])
    print u"男性人数:", male
    print u"女性人数:", female
    print u"总人数:", total
    a = (float(male) / total * 100)
    b = (float(female) / total * 100)
    c = (float(other) / total * 100)
    print u"男性朋友:%.2f%%" % a
    print u"女性朋友:%.2f%%" % b
    print u"其他朋友:%.2f%%" % c
    
    #绘制图形
    import matplotlib.pyplot as plt
    labels = ['Male','Female','Unkown']
    colors = ['red','yellowgreen','lightskyblue']
    counts = [a, b, c]
    plt.figure(figsize=(8,5), dpi=80)
    plt.axes(aspect=1) 
    plt.pie(counts, #性别统计结果
            labels=labels, #性别展示标签
            colors=colors, #饼图区域配色
            labeldistance = 1.1, #标签距离圆点距离
            autopct = '%3.1f%%', #饼图区域文本格式
            shadow = False, #饼图是否显示阴影
            startangle = 90, #饼图起始角度
            pctdistance = 0.6 #饼图区域文本距离圆点距离
    )
    plt.legend(loc='upper right',)
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.title(u'微信好友性别组成')
    plt.show()
    

    这段代码获取好友列表后,从第二个好友开始统计性别,即friends[1:],因为第一个是作者本人,然后通过循环计算未设置性别0、男性1和女性2,最后通过Matplotlib库绘制饼状图。如下所示,发现作者男性朋友66.91%,女性朋友26.98%。




    三. 微信自动回复及发送图片


    微信发送信息调用send()函数实现,下面是发送文字信息、文件、图片和视频。

    # coding-utf-8
    import itchat
    itchat.login()
    itchat.send("Hello World!", 'filehelper')
    itchat.send("@fil@%s" % 'test.text')
    itchat.send("@img@%s" % 'img.jpg', 'filehelper')
    itchat.send("@vid@%s" % 'test.mkv')
    比如给我的微信文件助手发了个“Hello World”和一张图片。


    如果想发送信息给指定好友,则核心代码如下:

    #想给谁发信息,先查找到这个朋友
    users = itchat.search_friends(name=u'通讯录备注名')
    #找到UserName
    userName = users[0]['UserName']
    #然后给他发消息
    itchat.send('hello',toUserName = userName)

    下面这部分代码是自动回复微信信息,同时在文件传输助手也同步发送信息。
    #coding=utf8
    import itchat
    import time
    
    # 自动回复
    # 封装好的装饰器,当接收到的消息是Text,即文字消息
    @itchat.msg_register('Text')
    def text_reply(msg):
        if not msg['FromUserName'] == myUserName: # 当消息不是由自己发出的时候
            # 发送一条提示给文件助手
            itchat.send_msg(u"[%s]收到好友@%s 的信息:%s\n" %
                            (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),
                             msg['User']['NickName'],
                             msg['Text']), 'filehelper')
            # 回复给好友
            return u'[自动回复]您好,我现在有事不在,一会再和您联系。\n已经收到您的的信息:%s\n' % (msg['Text'])
    
    if __name__ == '__main__':
        itchat.auto_login()
        myUserName = itchat.get_friends(update=True)[0]["UserName"]
        itchat.run()
    运行结果如下图所示:

      



    四. 获取微信签名并进行词云分析


    最后给出获取微信好友的签名的词云分析,其friends[i]["Signature"]获取签名,最后调用jieba分词最后进行WordCloud词云分析。

    # coding:utf-8
    import itchat
    import re
    
    itchat.login()
    friends = itchat.get_friends(update=True)[0:]
    tList = []
    for i in friends:
        signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
        rep = re.compile("1f\d.+")
        signature = rep.sub("", signature)
        tList.append(signature)
    
    # 拼接字符串
    text = "".join(tList)
    
    # jieba分词
    import jieba
    wordlist_jieba = jieba.cut(text, cut_all=True)
    wl_space_split = " ".join(wordlist_jieba)
    
    # wordcloud词云
    import matplotlib.pyplot as plt
    from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator   
    import PIL.Image as Image
    from scipy.misc import imread
    from os import path
      
    # 读取mask/color图片  
    d = path.dirname(__file__)  
    nana_coloring = imread(path.join(d, "test.png"))  
    
    # 对分词后的文本生成词云  
    my_wordcloud = WordCloud(background_color = 'white',      # 设置背景颜色  
                                mask = nana_coloring,          # 设置背景图片  
                                max_words = 2000,              # 设置最大现实的字数  
                                stopwords = STOPWORDS,         # 设置停用词  
                                max_font_size = 50,            # 设置字体最大值  
                                random_state = 30,             # 设置有多少种随机生成状态,即有多少种配色方案  
                                )
    # generate word cloud   
    my_wordcloud.generate(wl_space_split)  
      
    # create coloring from image    
    image_colors = ImageColorGenerator(nana_coloring)  
      
    # recolor wordcloud and show    
    my_wordcloud.recolor(color_func=image_colors)  
      
    plt.imshow(my_wordcloud)    # 显示词云图  
    plt.axis("off")             # 是否显示x轴、y轴下标  
    plt.show()

    输出结果如下图所示,注意这里作者设置了图片罩,生成的图形和那个类似,发现“个人”、“世界”、“生活”、“梦想”等关键词挺多的。



    (By:Eastmount 2018-03-19 晚上11点  http://blog.csdn.net/eastmount/ )


    展开全文
  • 本次在此基础上完善功能,利用java技术开发,把界面功能做出来,能让使用者通过界面的方式来操作回复功能。记录了微信访问次数,为以后的数据分析提供数据的支撑。 以下为界页截图,经过了反复的测试:
  • } } } }/** * 解析微信发来的请求(xml) * * @param request * @return * @throws Exception*/@SuppressWarnings({"unchecked"})public static MapparseXml(HttpServletRequest request) throws Exception {//将解析...
  • 这篇文章主要为大家详细介绍了PHP微信开发之简单实现文本,图片以及图文自动回复的相关资料。首先,先去微信公众平台注册一个账号,注册好之后,登录进去。可以看到左侧的“开发者中心”,开启开发者中心前好像还要...
  • 前言首先你的微信号能够登录网页版微信,才能打造你的专属个人微信号机器人,点击跳转网页版微信登录页面类似的文章网上也都有,其实我也是受到别的文章的一些启发,因为不是每个人都想实现同样的功能的,直接套用...
  • python3 做微信自动回复: 参考: http://itchat.readthedocs.io/zh/latest/tutorial/tutorial0/   下载itchat: https://pypi.python.org/pypi/itchat/ import itchat, time from itchat....
  • 微信公众号自动回复功能开发 本篇主要讲解 微信公众号自动回复功能开发,让我们自己去托管公众号回复的功能,这样可以更加灵活的根据公众号收到的信息来制定特定的回复信息,一起来了解吧! 1.注册公众号 如果你从来...
  • 简单粗暴,分享一种有趣的玩法---微信自动回复机器人。   程序很简单仅仅三十行代码左右,实现了机器人自动与你的微信好友聊天,下面是我的机器人小笼包跟自己微信好友聊天的截图。   二、程序介绍 欢迎...
  • 或许你有理,但是女生要的往往不是理由,而是你的道歉跟安慰,而拉不下面子不很认错,可能等待的就是撒油啦啦~果不其然,后面迎接我的将是一番暴风雨,为了避免这样的情况出现,一起来写一个微信消息自动回复工具吧...
  • 微信自动回复管理生成器可以管理多个问题,每个问题可以有多级关键词,总问题不限。最后问题可以生成一个php文件,上传到自己的空间,然后就可以在微信中开启开发模式,调用这个文件,就可以达到自动回复的功能。
  • 一、 微信公众号开发以及消息自动回复 1、第一步先注册微信公众平台进入。 2、接下来点击首页开发中基本配置。 3、点击开启第三方接口功能,点击启用后首页功能中的功能不能使用 4、然后我们可以进入开发中开发者...
  • python微信自动回复

    2019-01-13 14:51:57
    在准备工作做完之后,就可以进入正式开发了,其实这个程序主要是使用了图灵机器人的接口,你所有的回复内容是通过图灵机器人进行的,而我们所做的就是使用python调用相应函数就行了。 1. 安装wxpy 在命令行输入 pip...
  • 这个是我给我自己小区微信号专门开发的程序,可以满足最基本的自动回复功能。 程序可以管理问题,还可以将问题生成一个php文件,然后你将 php文件上传到你的网站,在微信里开通开发者,就可以实现 自动回复。 我还...
  • 几乎人人每天都在用微信,回复较费时,又麻烦,如何实现自动回复呢?C#开发的软件可以,很方便。源代码供分享。
  • 基于微信公众平台的,自动回复。里面有详细代码。
  • 微信开发自动回复

    2018-04-18 17:04:04
    众所周知,微信有一个特别重要的一个功能就是自动回复,就是用户访问订阅号并发送消息,订阅号会根据用户输入字符回复用户,我写了自动回复文字,图片和图文。每一个自动回复都是一个网页,分别是&lt;extend ...
  • 微信可以识别标签,但是要是标准格式。 另外微信也能识别\n换行符。 不过,如果\n换行符在标签内是无法识别的,会导致标签以源代码的方式显示出来。 \n放在标签之外可以正常显示。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 967
精华内容 386
关键字:

微信自动回复开发