[QQAI機器人]-爬蟲機器人

簡述

爬蟲是什麼

爬蟲就是按照一定的規則來抓取我們想要的數據

例如 我可以獲取我的博客博文以及連接

按照設定的規則來爬數據

智能機器人是什麼

例如我們現在要用的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章