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

              以及依赖包们

    完成后:

        
 

步骤二 - 编程(完结):

    实现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();
	}
	
}

   

    运行结果


  

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值