WebMagic 简单实例

WebMagic 简单实例

关于WebMagic,官网→http://webmagic.io/←这里就不多介绍了

就如官网所说↓


 

写一个例子也是很简单的~

步骤一 - 导包:

    使用maven:

 

<dependency>
	    <groupId>us.codecraft</groupId>
	    <artifactId>webmagic-core</artifactId>
	    <version>0.5.2</version>
</dependency>
<dependency>
	    <groupId>us.codecraft</groupId>
	    <artifactId>webmagic-extension</artifactId>
	    <version>0.5.2</version>
</dependency>

    

 

    不使用maven(ヽ(  ̄д ̄;) 为啥不使用):

    下载:webmagic-core-0.5.2.jar

              webmagic-extension-0.5.2.jar

              以及依赖包们

    完成后:

        WebMagic 简单实例_第1张图片
 

步骤二 - 编程(完结):

    实现PageProcessor接口及其getSite()process(Page page)方法↓

 

package com.night.webmagic.demo;

import java.util.List;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * 
 * @author [email protected]
 *
 */
public class AniMusicProcessor implements PageProcessor{
	
	private Site site = Site.me().setSleepTime(1000).setRetryTimes(3);
	
	//列表页的正则表达式
	public static final String URL_LIST = "http://www\\.36dm\\.com/sort-4-\\d+\\.html";
	//详情页的正则表达式
    public static final String URL_POST = "http://www\\.36dm\\.com/show-\\w+\\.html";
	
	@Override
	public Site getSite() {
		return site;
	}
	
	@Override
	public void process(Page page) {
		//列表页
        if (page.getUrl().regex(URL_LIST).match()) {
        	List<String> l_post = page.getHtml().xpath("//div[@class=\"clear\"]").links().regex(URL_POST).all(); //目标详情
        	List<String> l_url = page.getHtml().links().regex(URL_LIST).all();	//所有的列表
            page.addTargetRequests(l_post);
            page.addTargetRequests(l_url);
        //详情页
        } else {
        	String title = page.getHtml().xpath("//div[@class='location']").regex("\\[[\\S|\\s]+\\<").toString();	//匹配标题
            page.putField("title", title.substring(0, title.length() - 1).trim());
            page.putField("torrent", page.getHtml().xpath("//p[@class='original download']").links().toString().trim());	//匹配种子
            System.out.println();
        }	
	}
	
	public static void main(String[] args) {
		Spider.create(new AniMusicProcessor())
			.addUrl("http://www.36dm.com/sort-4-1.html")	//开始地址	
			.addPipeline(new ConsolePipeline())	//打印到控制台
			.addPipeline(new FilePipeline("D:\\webmagic\\AniMusic"))	//保存到文件夹
			.thread(5)	//开启5线程
			.run();
	}
	
}

   

    运行结果

WebMagic 简单实例_第2张图片
  

    爬虫的地址和内容的抓取规则需要根据想要抓取的网站分析得出√ヽ(  ̄д ̄;)

你可能感兴趣的:(java,爬虫,webmagic)