SWCJ爬虫框架
SWSJ
什么是SWSJ
SWSJ是一个基于jsoup和反射机制的java爬虫框架,能够使你的爬虫与代码分离开,降低解耦性,同时
你的爬虫可以通过配置文件来配置,这意味这当你的某些需求更改时,能直接修改配置文件而不必去修改你的代码
他能干什么
它能使你的配置地狱更加地狱(呸
他能使你通过几个简单的配置来实现一个爬虫的具体实施
关于作者与不完善之处,求生欲极强
这只是一个14的少年的不成熟作品,我完成他仅用了一周,他可能有大量不完美之处,我正在不断的完善,目前基础功能已经完成,不知道如何修改,所以先发出来, SWSJ爬虫框架: 一个通过配置文件实现爬虫的框架 (gitee.com)
jar包见仓库附件
使用详解
首先你需要一个配置文件,里面有部分不是必要的
然后通过xml工厂类(Xmlfactory)获取一个配置文件的所有实例
就可以通过工厂获取爬虫的实例,强转成接口就可以直接调用方法
一个返回字符串的简单具体实例
1.导入jar包(废话),暂不完善,并未上传maven
2.定义一个接口
import com.midream.sheep.swsj.Annotation.WebSpider;
public interface test {
@WebSpider("getHtml")//url的id,返回值与传参需要与配置文件一致
String[] getData(int count);
@WebSpider("getli")//支持多方法,非传参
String[] getLi();
}
3.配置文件
<?xml version="1.0" encoding="UTF-8" ?>
#main>div.slist>ul.clearfix>li>a
#main>div.slist>ul.clearfix>li
一个是有传参,一个是不传参,传参可传参改变值,参数数量可自定义,但是只能为基本数据类型(推荐String)
4.调方法
XmlFactory xf = null;
try {
xf = new XmlFactory(XmlFactory.class.getClassLoader().getResource("").getPath()+"com/midream/sheep/test.xml");
test getHtml = (test)xf.getWebSpider("getHtml");
String[] li = getHtml.getLi();
for (String s : li) {
System.out.println(s);
}
调XmlFactory获取配置,通过工厂获取类(注:需要强转)
5.直接通过接口调
一个返回javabean的复杂实例(较为详细)
定义配置文件
首先我们需要目标:

我们需要获取他的所有章节信息,所以需要封装一个章节实体类
public class Page {
private String title;
private String writer;
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
private String url;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
然后配置xml配置文件
首先配置一个工作空间和缓冲策略
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)
然后定义一个接口与方法并绑定到
public interface TestWeb {
@WebSpider("getAllPages")
Page[] getAllPages(String in);//返回值必须为数组
}
配置爬虫策略
#nr>td.odd
#nr>td.odd>a
#nr>td.odd>a
整个xml
<?xml version="1.0" encoding="UTF-8" ?>
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)
#nr>td.odd
#nr>td.odd>a
#nr>td.odd>a
调用
XmlFactory xf = new XmlFactory("E:\\item\\webDemo\\out\\production\\webDemo\\test.xml");
TestWeb test = (TestWeb) xf.getWebSpider("test");
Page[] pages = test.getAllPages("%CD%F2%B9%C5");
暂不完善,欢迎提出bug
xml配置模板
<?xml version="1.0" encoding="UTF-8" ?>
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)
uuid_tt_dd=4646545646-1642571061362-956268; UserName=xmdymcsheepsir;
#main>div.slist>ul>li>a
全篇完,欢迎大佬提出意见,目前优化思路见链接