当前位置: 首页 > news >正文

公司网站建设公司好哪个公司网站设计好

公司网站建设公司好,哪个公司网站设计好,网页设计模板素材图片简单,wordpress集成文库插件在我们调试爬虫程序的时候#xff0c;单线程爬虫没什么问题#xff0c;但是当我们在线上环境使用单线程爬虫程序去采集网页时#xff0c;单线程就暴露出了两个致命的问题#xff1a;采集效率特别慢#xff0c;单线程之间都是串行的#xff0c;下一个执行动作需要等上一个…在我们调试爬虫程序的时候单线程爬虫没什么问题但是当我们在线上环境使用单线程爬虫程序去采集网页时单线程就暴露出了两个致命的问题采集效率特别慢单线程之间都是串行的下一个执行动作需要等上一个执行完才能执行对服务器的CUP等利用率不高想想我们的服务器都是 8核16G32G 的只跑一个线程会不会太浪费啦线上环境不可能像我们本地测试一样不在乎采集效率只要能正确提取结果就行。在这个时间就是金钱的年代不可能给你时间去慢慢的采集所以单线程爬虫程序是行不通的我们需要将单线程改成多线程的模式来提升采集效率和提高计算机利用率。多线程的爬虫程序设计比单线程就要复杂很多但是与其他业务在高并发下要保证数据安全又不同多线程爬虫在数据安全上到要求不是那么的高因为每个页面都可以被看作是一个独立体。要做好多线程爬虫就必须做好两点第一点就是统一的待采集 URL 维护第二点就是 URL 的去重 下面我们简单的来聊一聊这两点。维护待采集的 URL多线程爬虫程序就不能像单线程那样每个线程独自维护这自己的待采集 URL如果这样的话那么每个线程采集的网页将是一样的你这就不是多线程采集啦你这是将一个页面采集的多次。基于这个原因我们就需要将待采集的 URL 统一维护每个线程从统一 URL 维护处领取采集 URL 完成采集任务如果在页面上发现新的 URL 链接则添加到 统一 URL 维护的容器中。下面是几种适合用作统一 URL 维护的容器JDK 的安全队列例如 LinkedBlockingQueue高性能的 NoSQL比如 Redis、MongodbMQ 消息中间件URL 的去重URL 的去重也是多线程采集的关键一步因为如果不去重的话那么我们将采集到大量重复的 URL这样并没有提升我们的采集效率比如一个分页的新闻列表我们在采集第一页的时候可以得到 2、3、4、5 页的链接在采集第二页的时候又会得到 1、3、4、5 页的链接待采集的 URL 队列中将存在大量的列表页链接这样就会重复采集甚至进入到一个死循环当中所以就需要 URL 去重。URL 去重的方法就非常多啦下面是几种常用的 URL 去重方式将 URL 保存到数据库进行去重比如 redis、MongoDB将 URL 放到哈希表中去重例如 hashset将 URL 经过 MD5 之后保存到哈希表中去重相比于上面一种能够节约空间使用 布隆过滤器(Bloom Filter)去重这种方式能够节约大量的空间就是不那么准确。关于多线程爬虫的两个核心知识点我们都知道啦下面我画了一个简单的多线程爬虫架构图如下图所示多线程爬虫架构图上面我们主要了解了多线程爬虫的架构设计接下来我们不妨来试试 Java 多线程爬虫我们以采集虎扑新闻为例来实战一下 Java 多线程爬虫Java 多线程爬虫中设计到了 待采集 URL 的维护和 URL 去重由于我们这里只是演示所以我们就使用 JDK 内置的容器来完成我们使用 LinkedBlockingQueue 作为待采集 URL 维护容器HashSet 作为 URL 去重容器。下面是 Java 多线程爬虫核心代码详细代码以上传 GitHub地址在文末我们用 5 个线程去采集虎扑新闻列表页看看效果如果运行该程序得到如下结果多线程采集结果结果中可以看出我们启动了 5 个线程采集了 61 页页面一共耗时 2 秒钟可以说效果还是不错的我们来跟单线程对比一下看看差距有多大我们将线程数设置为 1 再次启动程序得到如下结果单线程运行结果可以看出单线程采集虎扑 61 条新闻花费了 7 秒钟耗时差不多是多线程的 4 倍你想想这可只是 61 个页面页面更多的话差距会越来越大所以多线程爬虫效率还是非常高的。分布式爬虫架构分布式爬虫架构是一个大型采集程序才需要使用的架构一般情况下使用单机多线程就可以解决业务需求反正我是没有分布式爬虫项目的经验所以这一块我也没什么可以讲的但是我们作为技术人员我们需要对技术保存热度虽然不用但是了解了解也无妨我查阅了不少资料得出了如下结论分布式爬虫架构跟我们多线程爬虫架构在思路上来说是一样的我们只需要在多线程的基础上稍加改进就可以变成一个简单的分布式爬虫架构。因为分布式爬虫架构中爬虫程序部署在不同的机器上所以我们待采集的 URL 和 采集过的 URL 就不能存放在爬虫程序机器的内存中啦我们需要将它统一在某台机器上维护啦比如存放在 Redis 或者 MongoDB 中每台机器都从这上面获取采集链接而不是从 LinkedBlockingQueue 这样的内存队列中取链接啦这样一个简单的分布式爬虫架构就出现了当然这里面还会有很多细节问题因为我没有分布式架构的经验
http://wiki.neutronadmin.com/news/371313/

相关文章:

  • 移动应用开发适合女生吗哈尔滨网站优化排名
  • 我想在阿里巴巴网站开店 怎么做企业wordpress主题免费下载
  • 做qq空间动态皮肤网站网页美工设计培训学校哪家好
  • 做阀门网站电话号码注册域名之后怎么做网站
  • 网站开发公司首页网站概念设计
  • 有没有专门做衣服搭配的网站专业零基础网站建设教学公司
  • 旅游网站开发流程重庆百度优化
  • 如何在微信上做广告新站seo优化快速上排名
  • 视觉创意设计公司商城网站不易优化
  • 外贸建站哪家织梦网站标题被改
  • 定制网站建设官网wordpress 表格小工具
  • 青岛做公司网站的多吗自己做的网站数据库
  • 什么网站有高端定制案例国内建筑公司排名
  • wordpress多站点 文章导入怀柔富阳网站建设
  • 兼职做问卷调查的网站好做网站的岗位好吗
  • 网站建设公众号开高端企业网站建设制作
  • 贵州网站建设设计公司哪家好网站建设的困难
  • 网站建设系统规划电商小程序定制开发
  • 网站推广策划书自己可以学着做网站吗
  • 怎么帮助网站推广wordpress 计数
  • 广告设计网站官网网络营销模式
  • 邵阳建网站自己建站模板
  • 网站被百度惩罚怎么办邢台市政建设集团网站
  • linux做网站教程排版
  • 公司网页网站建设+ppt模板下载网站设计开发报价
  • 国家补贴软件网站开发政策做外贸哪些国外网站可以推广
  • dedecms医院网站wap模板(橙色)腾讯云网站搭建流程
  • 网站建设都分几个阶段平面设计接单网站有哪些
  • 企业网站怎么搭建wordpress 特效插件
  • 赤壁网站定制印度vps