[QQAI机器人]-爬虫机器人

﹥>﹥吖頭↗ 提交于 2020-03-03 05:06:38

简述

爬虫是什么

爬虫就是按照一定的规则来抓取我们想要的数据

例如 我可以获取我的博客博文以及连接

按照设定的规则来爬数据

智能机器人是什么

例如我们现在要用的QQ机器人

他可以按照你的规则来回复你的消息

你可以和他聊天

也可以让他把你去办某些事情

例如 你可以问他 我的快递到哪了 ,他就会回复你快递的信息


功能实现

环境配置

JCQ的环境配置这里就不说了,这里直说怎么去实现

[QQAI机器人]-使用Java开发环境搭建
配置好完成后,使用里面的 Maven Demo

导包

jcq-coolq:JCQ开发工具包
jsoup:爬虫包

<dependency>
    <groupId>com.sobte.cqp</groupId>
    <artifactId>jcq-coolq</artifactId>
    <version>1.2.7</version>
</dependency>
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.11.3</version>
</dependency>

开始编写程序

AppDemo.java:程序主类
JsoupMapping.java:爬虫运行类

编写JsoupMapping.java

获取博文的class
在这里插入图片描述
获取详细的名称和连接地址
在这里插入图片描述
最后成型的代码如下

package top.xsinfo.jsoupdemo;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

public class JsoupMapping {

    public synchronized static void csdn(String url,long fqq){
        StringBuilder sb = new StringBuilder();
        
        try {
            Connection connect = Jsoup.connect(url);
            Document document = connect.get();

			//所有的博文
            Elements items = document.getElementsByClass("article-item-box csdn-tracking-statistics");

            //这里只要10条就行了,太多了麻烦
            int num = Math.min(items.size(), 10);

            for (int i = 0; i < num ; i++) {
                Element item = items.get(i);
//                获取第一个有href标签的对象
                item = item.getElementsByAttribute("href").get(0);

                //获取内容
                String title = item.text();
                sb.append("title = ").append(title).append("\n");

                //获取属性
                String href = item.attr("href");
                sb.append("href = ").append(href).append("\n");

            }

        } catch (Exception e) {
            AppDemo.CQ.logError("JsoupMapping_csdn()",e.getMessage());
            e.printStackTrace();
            AppDemo.CQ.sendPrivateMsg(fqq,"爬取结果失败:"+e.getMessage());
        }

        //发送私聊消息
        AppDemo.CQ.sendPrivateMsg(fqq,sb.toString());
    }
}

私有消息处理

public static void main(String[] args) {
        // CQ此变量为特殊变量,在JCQ启动时实例化赋值给每个插件,而在测试中可以用CQDebug类来代替他
        CQ = new CQDebug();//new CQDebug("应用目录","应用名称") 可以用此构造器初始化应用的目录
        CQ.logInfo("[JCQ] TEST Demo", "测试启动");// 现在就可以用CQ变量来执行任何想要的操作了
        // 要测试主类就先实例化一个主类对象
        AppDemo demo = new AppDemo();
        // 下面对主类进行各方法测试,按照JCQ运行过程,模拟实际情况
        demo.startup();// 程序运行开始 调用应用初始化方法
        demo.enable();// 程序初始化完成后,启用应用,让应用正常工作

        // 模拟私聊消息
        demo.privateMsg(0, 10005, 3111111114L, "爬取博客https://xiaoshuai.blog.csdn.net/", 0);

        // demo.disable();// 实际过程中程序结束不会触发disable,只有用户关闭了此插件才会触发
        demo.exit();// 最后程序运行结束,调用exit方法
}


public int privateMsg(int subType, int msgId, long fromQQ, String msg, int font) {
    //爬取博客https://blog.csdn.net/qq_18604209
    if (msg.startsWith("爬取博客")){
        String url = msg.replace("爬取博客","").trim();
        JsoupMapping.csdn(url,fromQQ);

//        表示拦截消息不在让其他模块进行处理
        return MSG_INTERCEPT;
    };

    //不是我想要的,别的模块继续
    return  MSG_IGNORE;
}

接下来就该打包了
首先配置appid (不能有大写)
配置json里面的class
在这里插入图片描述

上传服务器测试

在这里插入图片描述

在这里插入图片描述
你也来试试吧,爬取别人的也可以哦

源码和Demo在这里

链接https://pan.baidu.com/s/14U1RjiUibpC7Ea8C55t_rQ
提取码:71co

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!