Java网络爬虫(十)--使用redis数据库构建爬虫队列
来源:互联网 发布:大众奥迪编程 编辑:程序博客网 时间:2024/06/06 10:54
代码思想主要是广度优先搜索,有不了解的同学可以下去了解一下算法思想,我们直接来看代码:
redis数据库爬虫队列代码:
package redisqueue;import redis.clients.jedis.Jedis;/** * Created by hg_yi on 17-6-12. */public class RedisQueue { private Jedis jedis = null; //本地redis数据库链接服务 public RedisQueue() { //连接本地的 Redis 服务 jedis = new Jedis("127.0.0.1", 6379); //权限认证 jedis.auth("******"); } //将未访问的url加入到toVisit表中(使用的是尾插法) public void addToVisit(String url) { jedis.rpush("toVisit", url); } //将未访问的url弹出进行解析 public String getToVisit() { return jedis.lpop("toVisit"); } //将已经解析过的url添加到已访问队列中 public void addVisited(String url) { jedis.rpush("visited", url); } //判断待访问url队列是否为空 public boolean toVisitIsEmpty() { Long length = jedis.llen("toVisit"); if (length == 0) { return true; } else { return false; } }}
主方法:
package redisqueue;import mainclassify.MainClassifyUrl;import java.util.Set;/** * Created by hg_yi on 17-6-12. * * 使用Jedis进行Redis数据库的操作 */public class MainMethod { public static void main(String[] args) { RedisQueue redisQueue = new RedisQueue(); //拿到种子链接(后面是我自己写的一个类,里面包含了种子url) Set<String> strings = MainClassifyUrl.getMainClassifyUrl(); //将种子链接写进redis数据库的待抓取列表 for (String url : strings) { redisQueue.addToVisit(url); } //使用类似广度优先搜索的思想进行新的url的提取 while (!redisQueue.toVisitIsEmpty()) { //从待访问url队列中取得一个新的url String url = redisQueue.getToVisit(); /** * 判断此url是否还可提取出新的url链接,如果可以进行新链接的提取, * 如果不行则放弃此节点,并将此节点放入已爬取队列中。 * * 当前如果使用上一节讲到的布隆过滤还可以实现海量url的去重。 * * 我们现在只说此url还可以进行提取的情况。 */ //使用jsoup提取新的url链接,并将其加入redis数据中的待访问url队列 //将已经访问过的url加入已访问url队列中 redisQueue.addVisited(url); } }}
阅读全文
0 0
- Java网络爬虫(十)--使用redis数据库构建爬虫队列
- 使用java实现网络爬虫
- Webmagic网络爬虫(JAVA)
- java网络爬虫与mysql数据库(一)
- java网络爬虫与mysql数据库(二)
- 使用scrapy-redis构建简单的分布式爬虫
- 构建网络爬虫?so easy
- 构建网络爬虫?so easy
- Java爬虫(一)--工程的构建
- 【网络爬虫】【java】微博爬虫(二):如何抓取HTML页面及HttpClient使用
- Java网络爬虫(十一)--使用多线程全面提升爬虫性能
- java使用webmagic实现网络爬虫功能(一)
- java使用webmagic实现网络爬虫功能(二)
- Java网络爬虫(一)--HttpClient的使用
- java网络爬虫,使用apache httpClient
- Java HttpClient 网络爬虫怎么使用
- 使用WebMagic 编写 java 网络爬虫
- 使用java 实现网络爬虫 demo
- 堆排序
- Android入门学习:GUI中的常用控件
- CSS简介:初识CSS
- 导入项目时,将java工程转变成web工程
- 盒模型
- Java网络爬虫(十)--使用redis数据库构建爬虫队列
- 分布式架构
- ubuntu系统无法访问无法磁盘最佳解决办法
- 斐波那契(java)
- sqlite学习
- D 01-HTML表单标签(重点)
- 从MVC到前后端分离
- Android Manifest.xml配置文件简介
- 编码-Windows中UTF8与BOM