Nodejs对于网页抓取的能力
我用 PHP Node.js Python 写过抓取脚本,复杂谈一下吧。
首先PHP。先说优势:网上抓取和解析html的框架一抓一大把,各种工具直接拿来用就行了,比拟省心。缺陷:首先速度/效率很成效果,有一次下载电影海报的时分,由于是crontab活期执行,也没做优化,开的php进程太多,直接把内存撑爆了。然后语法方面也很拖沓,各种关键字 符号 太多,不够繁复,给人一种没有仔细设计过的觉得,写起来很费事。
Node.js。优点是效率、效率还是效率,由于网络是异步的,所以基本似乎几百个进程并发一样弱小,内存和CPU占用十分小,假设没有对抓取来的数据停止复杂的运算加工,那么系统的瓶颈基本就在带宽和写入MySQL等数据库的I/O速度。当然,优点的反面也是缺陷,异步网络代表你需求callback,这时分假设业务需求是线性了,比如必需等候上一个页面抓取完成后,拿到数据,才干停止下一个页面的抓取,甚至少层的依赖关系,那就会出现可怕的多层callback!基本这时分,代码结构和逻辑就会一团乱麻。当然可以用Step等流程控制工具处置这些效果。
最后说Python。假设你对效率没有极端的要求,那么引荐用Python!首先,Python的语法很繁复,异样的语句,可以少敲很屡次键盘。然后,Python十分适宜做数据的处置,比如函数参数的打包解包,列表解析,矩阵处置,十分方便。