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(ヽ(  ̄д ̄;) 为啥不使用):
完成后:
步骤二 – 编程(完结):
实现
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 版权协议,转载请附上原文出处链接和本声明。