简述
爬虫是什么
爬虫就是按照一定的规则来抓取我们想要的数据
例如 我可以获取我的博客博文以及连接
按照设定的规则来爬数据
智能机器人是什么
例如我们现在要用的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在这里
来源:CSDN
作者:Timeless小帅
链接:https://blog.csdn.net/qq_18604209/article/details/104610732