
架构
爬虫构架|如何设计一款类“即刻”信息订阅推送的爬虫构架(一)
采集交流 • 优采云 发表了文章 • 0 个评论 • 221 次浏览 • 2020-05-27 08:02
有了前面的业务剖析,接下来我们就可以瞧瞧我们的构架应当怎么样来设计啦。我这儿先给出整体构架图。
分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略 查看全部
分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略 查看全部
有了前面的业务剖析,接下来我们就可以瞧瞧我们的构架应当怎么样来设计啦。我这儿先给出整体构架图。

分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略
分布式爬虫构架
采集交流 • 优采云 发表了文章 • 0 个评论 • 244 次浏览 • 2020-05-07 08:02
设计爬虫构架 爬虫构架满足一下功能 (1) 分布式:爬虫应当才能在多台机器上分布执行。 (2) 可伸缩性:爬虫结构应当才能通过降低额外的机器和带宽来提升抓取速率。 (3) 性能和有效性:爬虫系统必须有效地使用各类系统资源,例如,处理器、存储空间和网 络带宽。 (4) 可扩展性:为了才能支持新的数据格式和新的抓取合同,爬虫构架应当设计成模块化的 形式。 这里最主要的是爬虫和储存库。 其中的爬虫部份阶段性地抓取互联网上的内容。 存储库储存 爬虫下载出来的网页, 是分布式的和可扩充的储存系统。 在往储存库中加载新的内容时依然 可以读取储存库。整个爬虫系统可以由一台抓取机器或多个爬虫节点组成。 加载复杂的网页可以选择采用 WebKit 模拟浏览器处理 js 渲染页面获取 多机并行抓取的分布式系统节点之间的通讯和调度,在一个爬虫节点上实现并行抓取分布式爬虫架构,可以 考虑多线程同步 I/O 或者单线程异步 I/O。多线程爬虫须要考虑线程之间的同步问题。对单 线程并行抓取来说分布式爬虫架构,异步 I/O 是很重要的基本功能。解析流程 (1)通过基于正则,Xpath.Csspath 等规则,获取页面指定位置的 html 或文本数据 (2)按照数据格式需求,判断必要值是否存在,并依据类型判别数据正确 (3)通过验证的数据步入到数据入队的缓存队列等待存入数据库房 (4)如果数据验证不通过,则将异常的 url 返回到待抓取 URL 集合中重新抓取关键节点数据说明 (1)Web 配置界面:可在界面降低爬取的种子入口,入库规则,URL 过滤规则 (2)控制节点:负责将 URl 集合中的待爬地址分发到多个工作节点便于并发的执行爬取工作 (3)工作节点:根据待爬的 URL 信息和对应的种子规则获取页面并解析出数据,并按照抓取的页 面获取相关联的须要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析页面:根据种子提供的解析规则抽取,并验证数据的入库合法性,通过则存入入库缓冲 队列中,如果发觉有异常,则返回当前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的数据项,除了抓取的 url 本身外,额外带有流程中各环节处理结果的数据信息,如: 解析异常,会降低 url 项中的解析异常次数,以便在前面的逻辑中控制重试次数(还有更新次数, 最近成功更新时间....) 节点配置 根 据 系 统 的 规 模 和 数 据 抓 取 量 的 大 小 , 在 数 据 存 储 DB 这 块 , 可 以 根 据 实 际 情 况 采 用 mongo,hbase 或其它的数据库,以达到系统储存的可伸缩性URL 扭转的消息队列也可以依据系统规模,如 1 亿条数据缓存采用 ssdb,如果须要性能更好可 以采用 kafka 分布式的消息队列,以便可以便捷的扩充系统运行规模. 爬虫平台监控须要实现功能 (1)爬虫运行状态监控 a) 爬虫定时发送心跳包,监控平台依照心跳包,监控爬虫的运行状态 (2)爬虫采集量监控 a) 对爬虫爬取数据的总数的统计 (3)爬虫采集速度监控 /秒 /分 /时 根据规模需求而定 a) /秒 /分 /时 根据规模需求而定 (4)定时电邮发送运行状态和统计信息 a) 定时发送,爬虫运行的情况和爬取数据总数 查看全部
设计爬虫构架 爬虫构架满足一下功能 (1) 分布式:爬虫应当才能在多台机器上分布执行。 (2) 可伸缩性:爬虫结构应当才能通过降低额外的机器和带宽来提升抓取速率。 (3) 性能和有效性:爬虫系统必须有效地使用各类系统资源,例如,处理器、存储空间和网 络带宽。 (4) 可扩展性:为了才能支持新的数据格式和新的抓取合同,爬虫构架应当设计成模块化的 形式。 这里最主要的是爬虫和储存库。 其中的爬虫部份阶段性地抓取互联网上的内容。 存储库储存 爬虫下载出来的网页, 是分布式的和可扩充的储存系统。 在往储存库中加载新的内容时依然 可以读取储存库。整个爬虫系统可以由一台抓取机器或多个爬虫节点组成。 加载复杂的网页可以选择采用 WebKit 模拟浏览器处理 js 渲染页面获取 多机并行抓取的分布式系统节点之间的通讯和调度,在一个爬虫节点上实现并行抓取分布式爬虫架构,可以 考虑多线程同步 I/O 或者单线程异步 I/O。多线程爬虫须要考虑线程之间的同步问题。对单 线程并行抓取来说分布式爬虫架构,异步 I/O 是很重要的基本功能。解析流程 (1)通过基于正则,Xpath.Csspath 等规则,获取页面指定位置的 html 或文本数据 (2)按照数据格式需求,判断必要值是否存在,并依据类型判别数据正确 (3)通过验证的数据步入到数据入队的缓存队列等待存入数据库房 (4)如果数据验证不通过,则将异常的 url 返回到待抓取 URL 集合中重新抓取关键节点数据说明 (1)Web 配置界面:可在界面降低爬取的种子入口,入库规则,URL 过滤规则 (2)控制节点:负责将 URl 集合中的待爬地址分发到多个工作节点便于并发的执行爬取工作 (3)工作节点:根据待爬的 URL 信息和对应的种子规则获取页面并解析出数据,并按照抓取的页 面获取相关联的须要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析页面:根据种子提供的解析规则抽取,并验证数据的入库合法性,通过则存入入库缓冲 队列中,如果发觉有异常,则返回当前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的数据项,除了抓取的 url 本身外,额外带有流程中各环节处理结果的数据信息,如: 解析异常,会降低 url 项中的解析异常次数,以便在前面的逻辑中控制重试次数(还有更新次数, 最近成功更新时间....) 节点配置 根 据 系 统 的 规 模 和 数 据 抓 取 量 的 大 小 , 在 数 据 存 储 DB 这 块 , 可 以 根 据 实 际 情 况 采 用 mongo,hbase 或其它的数据库,以达到系统储存的可伸缩性URL 扭转的消息队列也可以依据系统规模,如 1 亿条数据缓存采用 ssdb,如果须要性能更好可 以采用 kafka 分布式的消息队列,以便可以便捷的扩充系统运行规模. 爬虫平台监控须要实现功能 (1)爬虫运行状态监控 a) 爬虫定时发送心跳包,监控平台依照心跳包,监控爬虫的运行状态 (2)爬虫采集量监控 a) 对爬虫爬取数据的总数的统计 (3)爬虫采集速度监控 /秒 /分 /时 根据规模需求而定 a) /秒 /分 /时 根据规模需求而定 (4)定时电邮发送运行状态和统计信息 a) 定时发送,爬虫运行的情况和爬取数据总数
爬虫构架|如何设计一款类“即刻”信息订阅推送的爬虫构架(一)
采集交流 • 优采云 发表了文章 • 0 个评论 • 221 次浏览 • 2020-05-27 08:02
有了前面的业务剖析,接下来我们就可以瞧瞧我们的构架应当怎么样来设计啦。我这儿先给出整体构架图。
分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略 查看全部
分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略 查看全部
有了前面的业务剖析,接下来我们就可以瞧瞧我们的构架应当怎么样来设计啦。我这儿先给出整体构架图。

分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略
分布式爬虫构架
采集交流 • 优采云 发表了文章 • 0 个评论 • 244 次浏览 • 2020-05-07 08:02
设计爬虫构架 爬虫构架满足一下功能 (1) 分布式:爬虫应当才能在多台机器上分布执行。 (2) 可伸缩性:爬虫结构应当才能通过降低额外的机器和带宽来提升抓取速率。 (3) 性能和有效性:爬虫系统必须有效地使用各类系统资源,例如,处理器、存储空间和网 络带宽。 (4) 可扩展性:为了才能支持新的数据格式和新的抓取合同,爬虫构架应当设计成模块化的 形式。 这里最主要的是爬虫和储存库。 其中的爬虫部份阶段性地抓取互联网上的内容。 存储库储存 爬虫下载出来的网页, 是分布式的和可扩充的储存系统。 在往储存库中加载新的内容时依然 可以读取储存库。整个爬虫系统可以由一台抓取机器或多个爬虫节点组成。 加载复杂的网页可以选择采用 WebKit 模拟浏览器处理 js 渲染页面获取 多机并行抓取的分布式系统节点之间的通讯和调度,在一个爬虫节点上实现并行抓取分布式爬虫架构,可以 考虑多线程同步 I/O 或者单线程异步 I/O。多线程爬虫须要考虑线程之间的同步问题。对单 线程并行抓取来说分布式爬虫架构,异步 I/O 是很重要的基本功能。解析流程 (1)通过基于正则,Xpath.Csspath 等规则,获取页面指定位置的 html 或文本数据 (2)按照数据格式需求,判断必要值是否存在,并依据类型判别数据正确 (3)通过验证的数据步入到数据入队的缓存队列等待存入数据库房 (4)如果数据验证不通过,则将异常的 url 返回到待抓取 URL 集合中重新抓取关键节点数据说明 (1)Web 配置界面:可在界面降低爬取的种子入口,入库规则,URL 过滤规则 (2)控制节点:负责将 URl 集合中的待爬地址分发到多个工作节点便于并发的执行爬取工作 (3)工作节点:根据待爬的 URL 信息和对应的种子规则获取页面并解析出数据,并按照抓取的页 面获取相关联的须要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析页面:根据种子提供的解析规则抽取,并验证数据的入库合法性,通过则存入入库缓冲 队列中,如果发觉有异常,则返回当前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的数据项,除了抓取的 url 本身外,额外带有流程中各环节处理结果的数据信息,如: 解析异常,会降低 url 项中的解析异常次数,以便在前面的逻辑中控制重试次数(还有更新次数, 最近成功更新时间....) 节点配置 根 据 系 统 的 规 模 和 数 据 抓 取 量 的 大 小 , 在 数 据 存 储 DB 这 块 , 可 以 根 据 实 际 情 况 采 用 mongo,hbase 或其它的数据库,以达到系统储存的可伸缩性URL 扭转的消息队列也可以依据系统规模,如 1 亿条数据缓存采用 ssdb,如果须要性能更好可 以采用 kafka 分布式的消息队列,以便可以便捷的扩充系统运行规模. 爬虫平台监控须要实现功能 (1)爬虫运行状态监控 a) 爬虫定时发送心跳包,监控平台依照心跳包,监控爬虫的运行状态 (2)爬虫采集量监控 a) 对爬虫爬取数据的总数的统计 (3)爬虫采集速度监控 /秒 /分 /时 根据规模需求而定 a) /秒 /分 /时 根据规模需求而定 (4)定时电邮发送运行状态和统计信息 a) 定时发送,爬虫运行的情况和爬取数据总数 查看全部
设计爬虫构架 爬虫构架满足一下功能 (1) 分布式:爬虫应当才能在多台机器上分布执行。 (2) 可伸缩性:爬虫结构应当才能通过降低额外的机器和带宽来提升抓取速率。 (3) 性能和有效性:爬虫系统必须有效地使用各类系统资源,例如,处理器、存储空间和网 络带宽。 (4) 可扩展性:为了才能支持新的数据格式和新的抓取合同,爬虫构架应当设计成模块化的 形式。 这里最主要的是爬虫和储存库。 其中的爬虫部份阶段性地抓取互联网上的内容。 存储库储存 爬虫下载出来的网页, 是分布式的和可扩充的储存系统。 在往储存库中加载新的内容时依然 可以读取储存库。整个爬虫系统可以由一台抓取机器或多个爬虫节点组成。 加载复杂的网页可以选择采用 WebKit 模拟浏览器处理 js 渲染页面获取 多机并行抓取的分布式系统节点之间的通讯和调度,在一个爬虫节点上实现并行抓取分布式爬虫架构,可以 考虑多线程同步 I/O 或者单线程异步 I/O。多线程爬虫须要考虑线程之间的同步问题。对单 线程并行抓取来说分布式爬虫架构,异步 I/O 是很重要的基本功能。解析流程 (1)通过基于正则,Xpath.Csspath 等规则,获取页面指定位置的 html 或文本数据 (2)按照数据格式需求,判断必要值是否存在,并依据类型判别数据正确 (3)通过验证的数据步入到数据入队的缓存队列等待存入数据库房 (4)如果数据验证不通过,则将异常的 url 返回到待抓取 URL 集合中重新抓取关键节点数据说明 (1)Web 配置界面:可在界面降低爬取的种子入口,入库规则,URL 过滤规则 (2)控制节点:负责将 URl 集合中的待爬地址分发到多个工作节点便于并发的执行爬取工作 (3)工作节点:根据待爬的 URL 信息和对应的种子规则获取页面并解析出数据,并按照抓取的页 面获取相关联的须要爬取的 URL 信息,加入到 URL 集合中等待爬取. (4)解析页面:根据种子提供的解析规则抽取,并验证数据的入库合法性,通过则存入入库缓冲 队列中,如果发觉有异常,则返回当前 URL 到 URL 集合中重新爬取 URL 集合 Url 集合中的数据项,除了抓取的 url 本身外,额外带有流程中各环节处理结果的数据信息,如: 解析异常,会降低 url 项中的解析异常次数,以便在前面的逻辑中控制重试次数(还有更新次数, 最近成功更新时间....) 节点配置 根 据 系 统 的 规 模 和 数 据 抓 取 量 的 大 小 , 在 数 据 存 储 DB 这 块 , 可 以 根 据 实 际 情 况 采 用 mongo,hbase 或其它的数据库,以达到系统储存的可伸缩性URL 扭转的消息队列也可以依据系统规模,如 1 亿条数据缓存采用 ssdb,如果须要性能更好可 以采用 kafka 分布式的消息队列,以便可以便捷的扩充系统运行规模. 爬虫平台监控须要实现功能 (1)爬虫运行状态监控 a) 爬虫定时发送心跳包,监控平台依照心跳包,监控爬虫的运行状态 (2)爬虫采集量监控 a) 对爬虫爬取数据的总数的统计 (3)爬虫采集速度监控 /秒 /分 /时 根据规模需求而定 a) /秒 /分 /时 根据规模需求而定 (4)定时电邮发送运行状态和统计信息 a) 定时发送,爬虫运行的情况和爬取数据总数