博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用webmagic构建一个分布式的爬虫
阅读量:6086 次
发布时间:2019-06-20

本文共 1098 字,大约阅读时间需要 3 分钟。

hot3.png

之前说过,使用webmagic的架构,很容易就可以通过扩展Scheduler构建一个分布式的爬虫。 参考淘宝官方博客的文章,构建了一个基于redis的分布式爬虫实现,代码如下:

public class RedisScheduler implements Scheduler{ private JedisPool pool; private static final String QUEUE_PREFIX = "queue_"; private static final String SET_PREFIX = "set_"; public RedisScheduler(String host){ pool = new JedisPool(new JedisPoolConfig(), host); } @Override public void push(Request request, Task task) { Jedis jedis = pool.getResource(); //使用SortedSet进行url去重 if (jedis.zrank(SET_PREFIX+task.getUUID(),request.getUrl())==null){ //使用List保存队列 jedis.rpush(QUEUE_PREFIX+task.getUUID(),request.getUrl()); jedis.zadd(SET_PREFIX+task.getUUID(),System.currentTimeMillis(),request.getUrl()); } } @Override public Request poll(Task task) { Jedis jedis = pool.getResource(); String url = jedis.lpop(QUEUE_PREFIX+task.getUUID()); if (url==null) { return null; } return new Request(url); }}

转载于:https://my.oschina.net/flashsword/blog/146890

你可能感兴趣的文章
透视校正插值
查看>>
oracle中如何指定表字段自增
查看>>
Mysql中的算术运算符详解
查看>>
ubuntu svn
查看>>
Hard模式题目
查看>>
那是梦吗
查看>>
调试 ASP 程序脚本
查看>>
第十四篇:获取系统数据文件信息
查看>>
为什么有些语言可以被反编译?而有的不能?
查看>>
JVM 调优
查看>>
最大似然估计
查看>>
如何使用Total Recorder录制软件发出的声音
查看>>
把异步架构延伸到客户端
查看>>
ORACLE数据库表解锁record is locked by another user
查看>>
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory
查看>>
Qualcomm 8X camera过程解析【转】
查看>>
配置管理之PackageProvider接口
查看>>
Oracle业务用户密码过期问题的解决
查看>>
EasyBoot使用方法
查看>>
Spring中基于Java的配置@Configuration和@Bean用法 (转)
查看>>