timzaak / blog

8 stars 1 forks source link

爬虫 和 分布式Helix #30

Closed timzaak closed 5 years ago

timzaak commented 5 years ago

爬虫开源的基本上都是 Python 的,Scala 世界的还太少。 目前解决方案是 scalaTest 关于 java selium 的封装类。然后自己再手动处理一下。

扒了扒github 上的 scala 爬虫开源框架,都已经不更新了。估计需要自己到时候需要自己做一份。 Jsoup + 线程调度框架(akka ?)+ 存储

ip 代理,西刺的只能扒取 http 的,https 的需要走 socket/https 代理,目前西刺上爬了点,能通过 https的极少极少,需要购买 ip 代理服务。

ScalaTest 的语法糖抽离,这个好说,目前代码 Crawler 中已经有范例了。 selium 生命周期管理, 这个还需要具体了解 java 调用 selium 机制再说

timzaak commented 5 years ago

今天尝试写了一天的分布式爬虫框架。这框架以及要解决的问题,感觉还是没有搞得太清楚。更不用说很好的抽象及细分问题了。还是需要十分十分的学习啊。

timzaak commented 5 years ago

Helix 基于 Zookeeper ,将 Zookeeper 作为Cluster 信息存储,在此基础上引入 Instance 、Resource、Rebalancing 概念。

Helix 官方提供了几个简单 demo。大体看了一下。

三个 demo 看过去后,发现 Helix 封装的概念还有很多。每个 Instance 只要处理好集群状态变更触发的逻辑即可,其余的关于集群相关的东西,皆可交由 Helix 处理。总之,是在 zookeeper 上封装出一套API。

另外 Helix 0.7.x 期望和 Yarn 整合,还处于 beta 状态。期待...

timzaak commented 5 years ago

python-spider 里面包含各种国内常见的资源爬取脚本。

分布式爬虫的核心,应该是 IP 资源使用、Scheduler 延迟爬取、url 去重、 数据的存储。

timzaak commented 2 years ago

各大云厂商提供serverless 函数,解决IP资源的问题。那么scheduler 任务变成了管理 serverless 函数的生命周期和管理函数代码。