ブリーフ
爬虫類は何ですか
爬虫類は、我々は、データをキャプチャする一定のルールに従ったものです
例えば、私は私のブログの記事との接続を取得することができます
データをクロールすることにより、設定したルールによると、
知能ロボットとは何ですか
たとえば、私たちは今、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