【Java】WebMagic实现的最基本的爬虫
2017-08-02 10:34
197 查看
WebMagic是一个十分容易入门的爬虫框架,并且扩展也十分容易。关于WebMagic,官网有十分详细的介绍,并且有教程和示例。我这里只实现了十分基础的功能,可以用作入门了解的参考。
准备工作:
1.需要到官网下载相关的jar包,并且导入到工程中(导入的方法请自行了解~)
2.这里用的是xpath的搜索方法,相关语法等,需要简单了解
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
public class hi implements PageProcessor {
// 抓取网站的相关配置,包括编码、抓取间隔、重试次数等
private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
private static int count =0;
@Override
public Site getSite() {
return site;
}
@Override
public void process(Page page) {
//判断链接是否符合 [a-z 0-9 -]*是任意数字字母
if(!page.getUrl().regex("http://blog.csdn.net/zuoxiaolong8810/article/details/[a-z 0-9 -]*.html").match()){
page.addTargetRequests(
page.getHtml().xpath("//*[@id=\"article_list\"]/div/div/h1/span/a/@href").all());//获取我需要的链接
System.out.println("文章标题:"+ page.getHtml().xpath("/html/head/title/text()").get() );//输出需要的内容(这里我需要的是标题)
count ++;
}
//把符合这个网址格式的,加入到爬取队列
page.addTargetRequests(page.getHtml().links().regex("(http://blog.csdn.net/zuoxiaolong8810/article/list/[a-z 0-9 -]*)").all());
}
public static void main(String[] args) {
long startTime, endTime;
System.out.println("开始爬取...");
startTime = System.currentTimeMillis();
Spider.create(new hi()).addUrl("http://blog.csdn.net/zuoxiaolong8810/article/list/1").thread(5).run();//从这个网址开始获取
endTime = System.currentTimeMillis();
System.out.println("爬取结束,耗时约" + ((endTime - startTime) / 1000) + "秒,抓取了"+count+"条记录");
}
}
xpath的值应该怎么填?
1.用chrome浏览器,对着需要获取的值,右键->检查,然后查看需要的内容
2.找到需要的内容后,右键->copy->xpath
3.之后可能需要自己再补充(比如:/@href)
准备工作:
1.需要到官网下载相关的jar包,并且导入到工程中(导入的方法请自行了解~)
2.这里用的是xpath的搜索方法,相关语法等,需要简单了解
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
public class hi implements PageProcessor {
// 抓取网站的相关配置,包括编码、抓取间隔、重试次数等
private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
private static int count =0;
@Override
public Site getSite() {
return site;
}
@Override
public void process(Page page) {
//判断链接是否符合 [a-z 0-9 -]*是任意数字字母
if(!page.getUrl().regex("http://blog.csdn.net/zuoxiaolong8810/article/details/[a-z 0-9 -]*.html").match()){
page.addTargetRequests(
page.getHtml().xpath("//*[@id=\"article_list\"]/div/div/h1/span/a/@href").all());//获取我需要的链接
System.out.println("文章标题:"+ page.getHtml().xpath("/html/head/title/text()").get() );//输出需要的内容(这里我需要的是标题)
count ++;
}
//把符合这个网址格式的,加入到爬取队列
page.addTargetRequests(page.getHtml().links().regex("(http://blog.csdn.net/zuoxiaolong8810/article/list/[a-z 0-9 -]*)").all());
}
public static void main(String[] args) {
long startTime, endTime;
System.out.println("开始爬取...");
startTime = System.currentTimeMillis();
Spider.create(new hi()).addUrl("http://blog.csdn.net/zuoxiaolong8810/article/list/1").thread(5).run();//从这个网址开始获取
endTime = System.currentTimeMillis();
System.out.println("爬取结束,耗时约" + ((endTime - startTime) / 1000) + "秒,抓取了"+count+"条记录");
}
}
xpath的值应该怎么填?
1.用chrome浏览器,对着需要获取的值,右键->检查,然后查看需要的内容
2.找到需要的内容后,右键->copy->xpath
3.之后可能需要自己再补充(比如:/@href)
相关文章推荐
- 基于HttpClient4.0的网络爬虫基本框架(Java实现)
- 【JAVA】基于HttpClient4.0的网络爬虫基本框架(Java实现)
- Java 网络爬虫的基本实现
- java使用webmagic实现网络爬虫功能(二)
- 基于HttpClient4.0的网络爬虫基本框架(Java实现)
- 基于HttpClient4.0的网络爬虫基本框架(Java实现)
- java实现最基本爬虫
- Java中实现 Client-Server 体系1 -- 基本实现
- dySE:一个 Java 搜索引擎的实现,第 1 部分: 网络爬虫
- Java 多线程 爬虫程序(spider)设计与实现
- java速度入四.文件的基本操作及猜数字游戏的实现
- Java 五子棋源程序 实现了基本的功能
- Java实现cache的基本机制
- 使用java基本语法实现的小程序(从1000年1月1日到9999年12月31日所有的对称日)
- Java写的爬虫的基本程序(转)
- 《算法导论的Java实现》 11 基本数据结构
- Java学习笔记之 swing 基本实现QQ截屏功能
- 用java数组实现基本链表和可自扩充的链表
- Java写的爬虫的基本程序
- java访问站点 并实现简易网络爬虫