关于node写爬虫
发布于 7 年前 作者 rebornchris 4901 次浏览 来自 问答

用cheerio+superagent写爬虫好像也不赖,有人了解用node写爬虫吗?和python相比之下有有什么优缺点呢?

16 回复

来人啊。。。

Node是单线程,python可以充分利用多线程 From Noder

分享板块有大神的文章 From Noder

@1261407209LHH pm2不是可以起多线程运行node项目吗?

@1261407209LHH node只是V8上跑的JS代码是在一个单线程上。node runtime自己是多线程的 所以网络请求,文件读取,这种异步IO都可以利用到多线程

@liygheart pm2跑的是多进程吧

没区别,框架大家一通抄 一摸一样

@1261407209LHH 就算是单线程,可是node没说自己是单进程,进程还是可以多开的

C语言可以写程序,Python语言也可以写程序,Js也可以写程序; 看你怎么写,写出来的代码风骚与否了

没啥区别,看你用那个爽了.

node单线程没错,但I/O是非阻塞的啊,照样能并发请求。

爬虫绝大部分开销都在网络io上,js的异步特性在这里是有优势的.

我看了大多数楼层的回复,总体来说其实没把握住终点,都在谈论python和node两种语言的区别。其实在写爬虫来说,区别不在语言本身,而是在针对爬虫的社区解决方案上。node的cheerio是一个解析库相当于beautifulsoup。但是在python生态中有成熟的爬虫框架scrapy,selenium等,这些框架几乎能解决我们在爬虫中遇到的所有问题,而不仅仅是写个demo玩玩,不知道的朋友可以去了解下。看上面的朋友的介绍,我发现大家对爬虫的理解太片面了,只有获取和解析,其实里面的道道还很多呢,比如 模拟浏览器执行js,如何防爬等。 其实这和单线程和多线程,异步和同步没多大关系。

现在异步io已经不是新鲜的事情了,对于node来说先天这样是优势,并不代表是绝对的优势。java中的nio异步io,netty是一个异步的、事件驱动的网络应用程序框架。 python的asyncio,异步框架也有,php也有了。先天支持和只有node支持是不一样的。大家好像认为只是node才是异步io。

我用的 urllib+cheerio+promise.all,挺方便的

回到顶部