WebMagic 简单实例

  • Post author:
  • Post category:其他



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


以及依赖包们

完成后:



步骤二 – 编程(完结):

实现

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 ReverieNight@Foxmail.com
 *
 */
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();
	}
	
}

运行结果




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



版权声明:本文为iteye_15647原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。