[QQAIロボット] - 爬虫類ロボット

ブリーフ

爬虫類は何ですか

爬虫類は、我々は、データをキャプチャする一定のルールに従ったものです

例えば、私は私のブログの記事との接続を取得することができます

データをクロールすることにより、設定したルールによると、

知能ロボットとは何ですか

たとえば、私たちは今、QQロボットを使用します

彼はあなたのメッセージに返信するためにあなたのルールに従うことができます

あなたは彼と一緒にチャットすることができます

あなたはまた、彼はいくつかのことを受け継がせることができます

たとえば、あなたはどこ私の宅配便彼を求めることができ、彼はあなたが表現返信されます


達成するための機能

環境設定

JCQの環境設定は、達成するためにどのように言って、ここで、ここで言うことができません

[QQAIロボット] -ビルドに使用するJava開発環境
Mavenのデモの内側に使用するように設定完了後

ガイドパッケージ

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を書きます

ボーエンクラスは、取得した
ここに画像を挿入説明
詳細な接続アドレス名と
ここに画像を挿入説明
、次のようにコードの最終形状を

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, "爬取博客htt18604209", 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内部クラス構成
ここに画像を挿入説明

アップロードサーバーのテスト

ここに画像を挿入説明

ここに画像を挿入説明
あなたは他の人もああクロールすることができ、それを試してみて

ここでは、ソースとデモ

リンクhttps://pan.baidu.com/s/14U1RjiUibpC7Ea8C55t_rQ
抽出コード:71co

公開された65元の記事 ウォン称賛57 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_18604209/article/details/104610732