python和node
❶ python,Node.js 哪个比较适合写爬虫
简单的定向爬取:
Python + urlib2 + RegExp + bs4
或者
Node.js + co,任一一款dom框架或者html parser + Request + RegExp 撸起来也是很顺手。
对我来说上面两个选择差不多是等价的,但主要我JS比较熟,现在选择Node平台会多一些。
上规模的整站爬取:
Python + Scrapy
如果说上面两个方案里DIY 的 spider是小米加步枪,那Scrapy简直就是重工加农炮,好用到不行,自定义爬取规则,http错误处理,XPath,RPC,Pipeline机制等等等。而且,由于Scrapy是基于Twisted实现的,所以同时兼顾有非常好的效率,相对来说唯一的缺点就是安装比较麻烦,依赖也比较多,我还算是比较新的osx,一样没办法直接pip install scrapy
另外如果在spider中引入xpath的话,再在chrome上安装xpath的插件,那么解析路径一目了然,开发效率奇高。
❷ Node.js 与 Python 作为后端服务的编程语言各有什么优劣
Node.js > Python 的地方
快:这个快有两方面,第一是V8引擎快,在V8引擎背后操刀的是Lars Bak大神,他创造过高性能SmallTalk引擎和Java Hotspot引擎(现在Java的默认VM),他带领下的V8引擎让Javascript速度达到了一个新的阶段。第二是异步执行,Node.js功能上是一个基于V8引擎的异步网络和IO Library,和Python的Twisted很像,不同的是Node.js的event loop是很底层的深入在语言中的,可以想象成整个文件在执行的时候就在一个很大的event loop里。
npm:npm可以说是用起来最顺手的package management了,npm作为Node.js的官方package management,汇集了整个社区最集中的资源。不像Python经历过easy_install和pip,还有2to3的问题。
Windows支持:Node.js有微软的加持,Windows基本被视为一等公民来支持,libuv已经可以很好的做到统一跨平台的API;而Python虽然也对Windows有官方的支持,但是总感觉是二等公民,时不时出些问题。
Python > Node.js 的地方
语言:就单纯从语言的角度来说,Python写起来要比Javascript舒服很多。Javascript设计本身有许多缺陷,毕竟当时设计的时候只是作为在浏览器中做一些简单任务的script,所以代码一旦庞大,维护还是有困难(不过Node.js的mole很大的改善了这个问题)。不过用Coffeescript可以很大的改善Javascript,几乎可以和Python等同。
成熟:成熟包括语言本身已经成熟,还有Framework和ecosystem也很庞大。Node.js的绝大多数framework都很新,有的API一直在变,有的感觉已经不在维护,总之没有一个像Django那种百足之虫感觉的framework。Python的主流ORM SQLalchemy也很成熟。
Python 和 Node.js 很难分高下的地方
异步Style:Node.js的异步Style是CPS,也就是层层callback,基于event,和浏览器中的Javascript很像。CPS好处是让熟悉浏览器Javascript的人能很快上手,学习难度也不大。缺点是逻辑一复杂,就变得很难维护,基本上需要通过async.js这种library,或者用promise。Python的异步除了和Node.js很像的Twisted之外,也有基于coroutine的gevent,coroutine让异步代码维护起来更容易,不过学习曲线陡。
应用场景:如果是一个CRUD的app,那么想都不想直接是Python,Node.js本身不擅长CRUD的app(绝大多数Node.js都是直接裸在外面的,而不是有一个Nginx在前面,否则websocket就不能用了,不过新版nginx开始支持websocket),代码又不好维护,而Python的WSGI很适合,成熟的stack也有很多。如果更偏向于real-time,比如一个chat room,那么Node.js实现更容易。这两个应用场景还是有差别的。
如果解决了您的问题请采纳!
如果未解决请继续追问!
❸ Websocket 用node还是python开发比较好
node好。node的优势是
前端、后端语言统一。
websocket有较成熟的方案,包括浏览器向前兼容方案。
本身是基于libev,并发特性好。
python虽然也有实现,相对来说没有node完善。
❹ Python和nodeJS哪个更适合做爬虫
Python更加适合用做爬虫,只要几行代码就可以实现大部分的功能。
❺ nodejs 还是python
简短的回答,这取决于你的情况。继续阅读以确定Django或Node是否更适合您的后端应用程序。
Node.js(GitHub上的55,432★)和Django(GitHub上的37,614★ )是构建Web应用程序的两个强大工具。
Node.js有一个“JavaScript无处不在”的动机,以确保在Web应用程序的服务器端和客户端使用JavaScript,Django有一个“完美主义者框架,有最后期限”的动机,以帮助开发人员快速构建应用程序。
它们正在许多大型项目中实施,它们拥有庞大的用户社区,并且正在定期升级。这两种工具的质量使开发人员对于为他们的项目选择哪种工具感到困惑。本文旨在清除空气并帮助您做出决定。
Node.js
JavaScript的主要优势在于它在客户端开发方面的优势,但Node.js正在通过在服务器端创建奇迹来完全相反。
Node是一个开源JavaScript运行时环境,用C,C ++和JavaScript编写,构建于Google V8 JavaScript引擎上,并于2009年发布.Node.js基于事件驱动的非阻塞I / O模型。
可以使用Windows Installer在Windows上安装节点。安装很简单,只需按照从官方网站下载安装程序后的提示即可完成。
可以从Windows命令提示符或PowerShell确认成功安装:
node-v
对于linux(Ubuntu)用户,可以从终端安装Node.js:
sudo apt-get updatsudo apt-get install nodejssudo apt-get install npm
可以在终端上通过以下方式确认在Linux(Ubuntu)上的成功安装:
nodejs-v
Node Package Manager(npm)用于安装与Node.js一起使用的包。
优点
伟大图书馆的可用性。高性能。非常适合构建API。它有一个很棒的包管理器。庞大的用户社区。轻松处理并发请求。缺点
异步编程可能难以使用。由于其单线程,CPU密集型应用程序不是很好。回调导致大量嵌套回调。Django
Django是一个非常强大的开源Python Web框架。它是非常高级的,因为大多数低级别的东西都被抽象出来了。众所周知,它具有“包含电池”的理念,因此它可以开箱即用。
Django可以实现快速开发项目,对于已经了解Python的人来说,它是初学友好的。
Django是以实用和干净的设计为基础构建的,并且具有构建复杂Web应用程序所需的所有主要组件。
安装非常简单,可以使用Python的包管理工具(称为pip)完成。如果安装了pip,则从终端开始,以下命令是Windows和Linux操作系统所需的全部操作。
pip install django
要确认其安装,只需激活Python shell并导入Django。在终端中键入“python”,如:
python
得到类似的东西:
Python 3.6.6 (default, Sep 12 2018, 18:26:19)[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linuxType "help", "right", "credits" or "license" for more information.>>>
然后使用以下方法导入Django:
importdjango
如果没有错误,那么一切正常。
优点
几乎没有安全漏洞。适用于关系数据库。简单易学。快速的发展过程。非常可扩展。庞大的用户社区。有很棒的文档。缺点
Django是单片的,即单层软件应用程序。对于小规模的应用来说并不是很好。需要充分了解该框架。两者都是开源的
Node.js和Django都可以免费使用。使用商业软件时,您不会遇到任何许可问题。它们也是开源的,因此当您发现要处理的功能或错误时,您可以为项目做出贡献。
查看Node.js 存储库和Django 存储库。
学习曲线
Node.js是一个从客户端浏览器环境中取出的JavaScript运行时,Django是一个Python框架。为了能够学习这两种工具,您需要熟悉使用他们的主要编程语言。
要使用Node.js,您需要了解异步编程,Node的本机方法和体系结构。
Node.js有很多在线教程,但是很多例子都很糟糕,这可能会让学习变得更加困难。
要使用Django,需要了解这些方法以及开箱即用的功能。还需要了解框架的MTV(模型模板视图)架构的完整理解。
虽然Django在网上有很多很好的教程,但你会发现有大量过时的教程教授旧的做事方式。
虽然学习Node.js和Django需要了解他们的基础语言,但Node引入了一些复杂的概念,这使得初学者与Django相比有点困难。
语法
Node.js只是在客户端浏览器环境之外的JavaScript。因此,它的语法更像是常规的JavaScript语法。
这是Node.js中的“hello world”应用程序:
var http = require('http');http.createServer(function (req, res) res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World!');}).listen(8080);
Django是基于Python构建的,因此它也使用Python语法。Python中的“Hello world!”就是:
print(“HelloWorld”)
但是,由于Django是一个框架,它强制您使用一个标识MTV模式的特定结构,因此我们需要编写不同的脚本来在Web应用程序上生成“Hello World”。
以下是Hello World的基本views.py文件:
from django.http import HttpResponsedef hello(request):return HttpResponse("Hello world")
这是urls.py文件:
from django.conf.urlsimport include, urlfrom django.contribimport adminfrom mysite.viewsimport hellourlpatterns = [url(r '^admin/', include(admin.site.urls)),url(r '^hello/, hello),]
可扩展性和性能
这两种工具都具有很好的可扩展性和性能 然而,虽然Django似乎具有可扩展性的优势,但Node.js具有性能优势。
可以使用群集模块使用负载均衡器克隆应用程序工作负载的不同实例来扩展Node.js应用程序。但是由于Node.js使用单线程,它在CPU密集型条件下表现不佳。
Django具有高度可扩展性,因为应用程序的缓存非常简单,可以使用MemCache等工具完成。NGINX还可用于确保提供压缩的静态资产,并且即使数据变得更加健壮,它也可用于成功处理数据迁移。
用户社区
Node.js和Django都有大型用户社区。这样做的主要因素是开发人员利用服务器端的JavaScript风格来处理Node.js的Web应用程序的后端,并利用Python易于使用的Django语法。与Django相比,网上有许多与网络相关的教程,有更多的公司将Node作为他们的后端网络技术。
Uber,Twitter,eBay,Netflix,DuckDuckGo,PayPal,LinkedIn,Trello,PayPal,Mozilla和GoDaddy都是使用Node.js作为后端技术的大牌。
Pinterest,Instagram,Eventbrite,Sentry,Zapier,Dropbox,Spotify和YouTube也是使用Django作为后端技术的一些大牌。
结论
这两种工具都非常适合构建Web应用程序,但是,每种工具都很突出。
例如,当您考虑使用关系数据库,许多外部库,将安全性作为列表中的最高优先级,并且需要快速构建应用程序时,Django是一个很好的选择。当您从服务器获得异步堆栈时需要使用Node.js,需要很好的性能,打算从头开始构建功能,并希望有一个应用程序来完成客户端处理的繁重工作。
选择最适合您需求的工具,这两种工具对Web开发都很有用。