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的复杂实例(较为详细)

定义配置文件

首先我们需要目标:

image

我们需要获取他的所有章节信息,所以需要封装一个章节实体类

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
                    
                
            
        
    


全篇完,欢迎大佬提出意见,目前优化思路见链接