webmagic爬虫使用

webmagic是一个非常好用的的开源爬虫工具,文档和源码在  http://webmagic.io/

使用起来也非常的简单,以我的博客首页为例,地址为 http://blog.csdn.net/hbdatouerzi;

 

1.引入所需要的包,可以在上面的地址下载;

2.重写PageProcessor类,相当于是告诉webmagic,对于这个网页你感兴趣的是什么;

public class csdnPageProcessor implements PageProcessor{
	
	    // 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等
	    private Site site;
	    
	    public csdnPageProcessor(){
	    	site = Site.me().setRetryTimes(3).setSleepTime(100);
	    }

	    @Override
	    public void process(Page page) {
	    	// 部分二:定义如何抽取页面信息,并保存下来
	        page.putField("title", page.getHtml().xpath("//span[@class='link_title']/a/text()").all().toString());
	        page.putField("content", page.getHtml().xpath("//div[@class='article_description']/a/text()").all().toString());
	        page.putField("href",page.getHtml().xpath("//span[@class='link_title']/a/@href").all().toString());
	        if (page.getResultItems().get("title") == null) {
	            page.setSkip(true);
	        }else{
	        	System.out.println(page.getResultItems().get("title").toString());
	        	System.out.println(page.getResultItems().get("content").toString());
	        }

	        // 部分三:从页面发现后续的url地址来抓取
	        //page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());
	        String[] href=page.getResultItems().get("href").toString().split(",");
	        System.out.println(href[0]);
	    }
	    

	    @Override
	    public Site getSite() {
	        return site;
	    }
}

以上的代码告诉了webmagic,我感兴趣的有三个东西,分别是title、content和href;

以title为例,下图红色框框里面的就是一个title;

webmagic爬虫使用_第1张图片

而title的源码为

webmagic爬虫使用_第2张图片

title是class=“link_title”的span标签里的内容,因此筛选的规则为"//span[@class='link_title']/a/text()"

3.客户端

public class Main {

    public static void main(String[] args) {
        Spider.create(new csdnPageProcessor()).addUrl("http://blog.csdn.net/hbdatouerzi").thread(5).run();
    
    }	
}

运行的结果如下图所示

image

你可能感兴趣的:(技能,开源框架)