热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webMagic爬虫抓取某个博客全部文章名称

demo下载地址:点击打开链接官方文档:点击打开链接主要类:packagetestMagic;importjava.util.List;importjavax.management.JMExce

demo下载地址:点击打开链接

官方文档:点击打开链接

主要类:

package testMagic;

import java.util.List;

import javax.management.JMException;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.monitor.SpiderMonitor;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
/**
* PageProcessor是webmagic-core的一部分,定制一个PageProcessor即可实现自己的爬虫逻辑。
* 以下是抓取csdn博客的一段代码
*/
public class OschinaBlogPageProcesser implements PageProcessor {
private Site site = Site.me().setSleepTime(1);
public Site getSite() {
return site;
}
int temp=1;
//process(过程)
public void process(Page page) {
//通过page.putField()来保存抽取结果
//page.getHtml().xpath()则是按照某个规则对结果进行抽取,这里抽取支持链式调用
List pages=page.getHtml().xpath("[@class='pagelist']").links().all();
if (pages.size()>5) {
pages.remove(pages.size()-1);
}
page.addTargetRequests(pages);//用于获取所有满足"(http://blog\\.csdn\\.net/u012012240/article/month/2016/08/\\d+)"这个正则表达式的链接
//区分是列表页面还是信息页面
if (page.getUrl().regex("article/list").match()) {
List links = page.getHtml().xpath("[@class='link_title']").links().regex("http://blog\\.csdn\\.net/chenyufeng1991/article/details/\\d+").all();
//通过page.addTargetRequests()方法来增加要抓取的URL
page.addTargetRequests(links);
}else {
System.out.println("记录数:"+temp++);
page.putField("title", page.getHtml().xpath("//[@class='link_title']/a/text()").toString());
}
}

//执行这个main方法,即可在控制台看到抓取结果。webmagic默认有3秒抓取间隔,请耐心等待。
public static void main(String[] args) {
//Spider是爬虫的入口类,addurl为入口url
Spider oschinaSpider = Spider.create(new OschinaBlogPageProcesser()).addUrl("http://blog.csdn.net/CHENYUFENG1991/article/list/1")
//Pipeline是结果输出和持久化的接口,这里ConsolePipeline表示结果输出到控制台
.addPipeline(new ConsolePipeline());
try {
//添加到JMT监控中
SpiderMonitor.instance().register(oschinaSpider);
//设置线程数
//oschinaSpider.thread(5);
oschinaSpider.run();
} catch (JMException e) {
e.printStackTrace();
}
}
}



推荐阅读
author-avatar
turneerpelliccia_291
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有