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開發都很有用。