1
ixinshang 2017-04-24 08:40:20 +08:00 via Android
34 厉害了
|
2
mekhi 2017-04-24 09:29:09 +08:00 via iPhone
把多说评论换了吧
|
3
mawing 2017-04-24 09:52:40 +08:00
试用(注册)的链接是 127.0.0.1
|
4
achaocha 2017-04-24 09:58:16 +08:00
试用(注册)的链接是 127.0.0.1
|
5
freeznet 2017-04-24 10:03:19 +08:00 1
|
8
jwenwang 2017-04-24 11:30:13 +08:00
厉害了
|
10
gyorou 2017-04-24 13:45:34 +08:00
LZ 造轮子辛苦了。 https://github.com/cantino/huginn
|
11
wuhx OP @gyorou 多谢提供这个信息,
仔细看了一下,这两者有很多不样的地方。 huginn 还是一个传统爬虫加一些 pipe 函数做数据处理。 而 CloudMonad 注重的是浏览过程和交互,比如说我要获取 V2EX 分页帖子的所有回复,一般爬虫的做法是以页码为参数自动生成的分页 url 地址分别采集,而 CloudMonad 会去 下一页那个按钮,然后不停的点击采集,只到最后一页(当然也支持拼 url 的方式)。 看了一下 huginn 的自定义 Agent 格式,只有 extract 字段,应该不支持任何交互。这样它的采集能里就会很弱,而演示中哪些看上去很酷的图表, 其实只是最基本的数据处理,完全可以把这两部分分开来么, 数据采集用「造数」这类专业的爬虫,然后自建一个 Hadoop 之类数据中心,定时把数据丢进去分析,专业性和稳定性瞬间就提升一个档次了。 另外,CloudMonad 在设计之初有一个小目标:要在尽可能低的系统资源下支持高扩展性(Scalable),而爬虫特别是 Headless 浏览器是高资源消耗操作, 如何在系统低载时尽可能少的消耗资源,又能应付突发大流量请求是一个难题。最后的解决方案是各种按需付费的云服务。 CloudMonad 用了多种云资源, 包括一个整合了阿里云 MNS 和亚马逊 SQS 双备份的 CloudQueue 用于任务分发。 LeanCloud 数据库配合阿里云 OSS 用于前后端通信。 IBM 的 openwhisk ,亚马逊的 Lambda , DigitalOcean 按需使用的虚拟主机用于动态调整资源。 目前整个 CloudMonad 系统的硬性支出只有一台阿里云最低配虚拟主机,其他资源都是按需使用的,目前还都在免费额度内(当然,用户少:() 那台阿里云虚拟机上运行着一个 Akka node 用于协调资源,用户管理等工作,具体的脏活都时候外包给其他云服务做。 说回 huginn ,它似乎更像一个传统的单机版应用,需要安装 mysql 数据库,对系统要求也很高。 github 首页还挂着一个一年前的内存泄漏 issue ,系统的水平扩展会很成问题 |
12
fhefh 2017-04-24 17:25:29 +08:00
厉害 mark
|
13
mingyun 2017-04-24 23:01:02 +08:00
厉害了
|
14
gyorou 2017-04-25 08:59:19 +08:00
@wuhx
首先能造出这么一个轮子的确很厉害。 不过我还是为 huggin 更正一下。 huggin 可以自己定制 Agent gem ,所以所谓的模拟用户行为之类的是完全没有问题的。 CloudMonad 用了多种云资源, 而 huggin 只是一个传统 Rails 应用加 Sidekiq 的任务管理而已,用 docker-compose 就可以快速起来,安装在任何可以跑 docker 的主机上完全没有问题。整个过程不用超过 5 分钟。比起要使用各种云服务,一台简单的 VPS 即可。 |
15
wuhx OP @gyorou 是的, docker 是部署应用程序的神器。 openwhisk 其实就是一个即销即用的 Docker 镜像。
|
16
Comdex 2017-04-25 18:16:57 +08:00
楼主,我想请教一下,就比如那个京东商品价格监控的,是使用 cron 定时执行,定时任务多时怎么优化
|
17
Comdex 2017-04-25 18:17:37 +08:00
还有有没办法实现秒级监控且能合理控制服务器资源
|
19
wuhx OP |
21
evin 2017-05-04 09:06:29 +08:00
注册需要邀请码。。。
|
24
GrahamCloud 2017-05-05 11:19:25 +08:00
这里是 造数的开发团队,很多启发, 求联系 @wuhx,微信:Zaoshuio
|
25
bestrenxs 2017-05-05 11:47:01 +08:00
思路很好,学习了!
|
26
wuhx OP |
28
wuhx OP @mosliu 如果你的服务支持 Rest Api,可以用 RestAction 触发调用,参考调用方糖发送微信消息那个例子。
|
29
johnnie502 2017-05-09 03:33:39 +08:00
可否加上 telegram bot 的支持?
|
30
wuhx OP @johnnie502
Telegram 提供了 Rest Api 接口,所以 CloudMonad 是直接支持的, 请参考: http://xun.im/2017/04/23/example-rest-api/ 测试用 telegram bot 发送京东降价通知,完全没问题,感觉 Telegram 比微信这种封闭环境对程序员友好多了,可惜被墙,使用不太方便。 telegram 的 Api 类似于: GET https://api.telegram.org/bot372908708:AAElXimm0on8TRnjzZK0Hf313C97XgW3_WM/sendMessage?chat_id=391625028&text=降价通知 {商品} {价格} chat_id 是你的帐号 id,botkey 是我建的测试机器人的,你可以自己建一个 提交前请在本地用 curl 测试一下。 [CloudMonad 测试机器人]( https://telegram.me/cloudmonad_bot) |
31
johnnie502 2017-05-09 22:27:44 +08:00
@wuhx 谢谢测试!这些 API 我也测试过(用 curl ),很好用。希望 cloudmonad 能有个用户友好的前端支持,这个才是您的服务的主要含金量所在吧
|
32
johnnie502 2017-05-09 22:29:06 +08:00
@wuhx 被墙的话在外国主机用 nginx 做个反代就行了,看你网站是用了国外 VPS 的
|
33
wuhx OP @johnnie502 是的,CloudMonad 的 UI 易用性有待加强,但这里的问题主要是没有针对 Telgram 设计 UI,走的是通用的 RestApi Action。
另外,CloudMonad 的主要优势是用户可以将 Feed,Spec,Action 自由组合 比如 Feed 用了京东价格监控, 就可以用 {商品} {价格} 的形式,把动态获取的价格信息发给用户(可以用 Telegram,也可以用微信等其他方式) |
34
johnnie502 2017-05-09 23:35:16 +08:00
@wuhx 我人在国外,所以对京东价格监测这些不是很敏感。如果要扩展海外用户的话(看到了英文版),可以也做做亚马逊之类的价格监控,应该能吸引一些用户。
|
35
wuhx OP @johnnie502
京东只是一个例子,亚马逊可以通过 FetchUrl Feed 支持 参考 [例 5:使用 FetchUrl 实现将任意网站作为输入源]( http://xun.im/2017/04/23/example-fetch-url/) 在参数绑定界面,把 url 换成你想监控的商品:如 https://www.amazon.com/Sony-VPLVW365ES-Native-Theater-Projector/dp/B016IL60LM/ content 换成 #priceblock_ourprice 即能实现定时监控亚马逊价格,配合 Telegram 或其他方式通知。 当然这样的操作对用户不够友好,最终版本会考虑用鼠标点击选取目标的形式。 |
36
Damaidaner 2017-05-10 09:54:09 +08:00
LZ 厉害了, 马克一下
|
37
jijifly 2017-05-10 21:02:13 +08:00
楼主想请教一下,此类产品如何突破网站爬虫限制频率?
比如有很多个用户关注了不同商品的京东价格,最终结果可能是每秒钟爬取 N 次京东的数据,势必会引来京东的 IP 封锁,楼主是如何处理的呢? @wuhx |
38
wuhx OP @jijifly 首先爬虫是分布式的,同一个 IP 不会用每秒 N 次这么高的频率访问同一个网站
其次,后台在调度的时候也会考虑将相同目标网站的请求分散开来,或者也可以自建或购买 IP 代理池。 另外,CloudMonad 的爬虫是用户自己定制的,用户在创建的时候,可以指定专门的代理地址,Cookie 等,会比普通爬虫更难检测。 |
39
wujunze 2017-05-11 16:22:19 +08:00
不错 👍
|
40
kenshinji 2017-05-12 13:42:56 +08:00 via iPhone
码一个
|
41
wuhx OP 新增一个栗子
[利用 CloudMonad 从微信发送消息到钉钉]( https://zhuanlan.zhihu.com/p/26876277) 另外根据每个 Feed/Action 的稳定性,新增了[版本周期]说明,比如微信消息接收 Feed 相对稳定其状态为 Stable,微信消息发送 Action 在系统并发量多的时候偶尔会丢失消息状态为 Experimental。 请在试用的时候,尽量选择 Stable 的例子。 |
42
ideacco 2017-05-15 12:42:31 +08:00
希望能增加硬件支持,我倒是觉得硬件这块儿发展空间巨大。物联网一定会到的。
|
43
Vkin 2017-05-16 12:00:37 +08:00
监控京东价格,有变化自动发送到 qq ?
|
45
lada04 2017-05-17 06:34:06 +08:00
没找到,在哪里修改 已创建好的任务
|
46
wuhx OP |
47
wuhx OP @Vkin
目前不支持 QQ,你可以自己包装一个发送 QQ 消息的 RestApi,然后参考 方糖 /Telegram/钉钉 的例子和 CloudMonad 集成。 |
49
wuhx OP |
50
duhai973 2017-05-20 08:19:22 +08:00
fetchurl 感觉有点弱啊
|