所有的URL都接受管理,并在此进行流动。URL从管理模块的存储空间开始,一直到最后输出给磁盘上的URL索引,都由此部分调度。
首先,给出URL调度的一般过程,如图所示。
其流程的各个具体操作,后面详述。
要实现前面DNS的无重复有效请求,那么在这个部分里设置一个Nsite类,实现这样的功能:当一个站点请求过DNS后,就把返回的IP保存到这个类里,那么再有这个站点内的URL出现(域名部分相同),就可以使用这个IP,而不必重复请求。
为了从一个URL中很快的找到其对应的Nsite还应该设置一个hash表,
里面存放着所有Nsite站点,这样,一个URL可以通过采用计算其域名的哈希值就快速的找到对应的站点Nsite。如:
NamedSite *namedSiteList;
namedSiteList = new NamedSite[内存中的站点数];
如果这个站点没有请求过DNS,那么就加到一个循环队列dnssite中,随时等待main( )中对其提出调度。如果有就转移到IPSite中,如果这个IPSite已经加到了okSite,那么,就把URL打到tab中。随时等待main( )调度抓取。

void push_surlqueue(Surl *url)
{  if (url != NULL && surl_precheck(url)) {  SPIDER_LOG(SPIDER_LEVEL_DEBUG, "I want this url: %s", url->url);  pthread_mutex_lock(&sq_lock);  surl_queue.push(url);  if (surl_queue.size() == 1)  pthread_cond_signal(&sq_cond);  pthread_mutex_unlock(&sq_lock);  }
}  Url * pop_ourlqueue()
{  Url *url = NULL;  pthread_mutex_lock(&oq_lock);  if (!ourl_queue.empty()) {  url = ourl_queue.front();  ourl_queue.pop();  pthread_mutex_unlock(&oq_lock);  return url;  } else {  int trynum = 3;  struct timespec timeout;  while (trynum-- && ourl_queue.empty()) {  get_timespec(&timeout, 500); /* 0.5s timeout*/  pthread_cond_timedwait(&oq_cond, &oq_lock, &timeout);  }  if (!ourl_queue.empty()) {  url = ourl_queue.front();  ourl_queue.pop();  }  pthread_mutex_unlock(&oq_lock);  return url;  }
}  

网络爬虫十三-队列处理相关推荐

  1. Python3网络爬虫(十三):王者荣耀那些事!(Fiddler之手机APP爬取)

    转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 前言 实 ...

  2. python爬虫手机app数据库_Python3网络爬虫(十三):王者荣耀那些事!(Fiddler之手机APP爬取)...

    运行平台: Windows Python版本: Python3.x IDE: Sublime text3 1 前言 暑假回家,"小皇帝"般的生活持续了几天,头几天还挺舒服,闲久了顿 ...

  3. (十三)python网络爬虫(理论+实战)——IP代理、构建IP代理池

    系列文章: python网络爬虫专栏 目录 序言 本节学习目标 特别申明 5 ip代理

  4. python网络爬虫初识_python爬虫(一)初识爬虫

    什么是爬虫? 中文名(网络爬虫) 外文名(web crawler) 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程 ...

  5. java爬虫面试题_使用Java实现网络爬虫

    网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  6. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

  7. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  8. 使用Scrapy构建一个网络爬虫

    记得n年前项目需要一个灵活的爬虫工具,就组织了一个小团队用Java实现了一个爬虫框架,可以根据目标网站的结构.地址和需要的内容,做简单的配置开发,即可实现特定网站的爬虫功能.因为要考虑到各种特殊情形, ...

  9. 精通python网络爬虫-精通python网络爬虫

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 作者:韦玮 转载请注明出处 随着大数据时代的到来,人们对数据资源的需求越来越多, ...

最新文章

  1. 通用社区登陆组件技术分享(开源)中篇:OAuth 登陆组件流程及组件集成方法...
  2. 独家 | 精选近期机器学习GitHub项目及Reddit热门话题(附链接)
  3. 【ZK-curator使用异常】KeeperErrorCode = Unimplemented for /***
  4. UVa1316 Supermarket(贪心)
  5. 【cocostudio】发布资源在Cocos2d-x中如何使用
  6. DataScience:风控场景之金融评分卡模型的构建(逻辑回归)开发(转评分卡)、使用过程(线上实现)之详细攻略
  7. Python__面向对象思想
  8. linux添加、修改环境变量
  9. NOIP 2016【蚯蚓】
  10. IIS负载均衡-Application Request Route详解第五篇:使用ARR来配置试点项目
  11. [渝粤教育] 中国地质大学 微积分(一) 复习题 (2)
  12. java 中map_Java中Map集合
  13. 作者:周晓津(1971-),男,博士,广州市社会科学院研究员。
  14. 数学(FFT):BZOJ 3527 [Zjoi2014]力
  15. 快1倍,我在 M1 Max 上开发 iOS 应用有了这些发现
  16. 查询sql 语句的好坏
  17. 正则表达式提取身份证号码
  18. AMD yes! 平民炬丹师的卡皇Radeon VII,老年博士生的丹房修建记录:Rocm 3.1+ pytorch 1.4+tensorflow 2+tensorflow 1.15.2 折腾记
  19. source pages
  20. kubernetes Downward API

热门文章

  1. 同步降压电路PCB布局注意事项
  2. 微机原理真题2019年,错题整理
  3. 很有意思的软件产品宣传画,这个美工很有创意
  4. 微型计算机原理第三版考试,微机原理考试试题及答案分析
  5. SQL专项复习(使用GROUP BY, WITH AS)——习题篇02
  6. 《树莓派4B家庭服务器搭建指南》第九期:用树莓派低成本给热心老哥搭个窝,在树莓派建立BBS论坛flarum并映射到公网全攻略...
  7. Codeforces Round #702 (Div. 3)——B
  8. 搜索引擎优化系统知名乐云seo_乐云seo_网站SEO优化_关键词排名_整站SEO公司-蜂群SEO...
  9. linux中.sql.gz文件解压,linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
  10. myeclipse2017下载安装与破解详细教程