簡述
爬蟲是什麼
爬蟲就是按照一定的規則來抓取我們想要的數據
例如 我可以獲取我的博客博文以及連接
按照設定的規則來爬數據
智能機器人是什麼
例如我們現在要用的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在這裏