當前位置:首頁 » 編程語言 » node和python

node和python

發布時間: 2022-06-14 16:29:54

⑴ 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實現更容易。這兩個應用場景還是有差別的。

如果解決了您的問題請採納!
如果未解決請繼續追問!

⑵ Python,Node.js 哪個比較適合寫爬蟲

主要看你定義的「爬蟲」干什麼用。

1、如果是定向爬取幾個頁面,做一些簡單的頁面解析,爬取效率不是核心要求,那麼用什麼語言差異不大。
當然要是頁面結構復雜,正則表達式寫得巨復雜,尤其是用過那些支持xpath的類庫/爬蟲庫後,就會發現此種方式雖然入門門檻低,但擴展性、可維護性等都奇差。因此此種情況下還是推薦採用一些現成的爬蟲庫,諸如xpath、多線程支持還是必須考慮的因素。

2、如果是定向爬取,且主要目標是解析js動態生成的內容
此時候,頁面內容是有js/ajax動態生成的,用普通的請求頁面->解析的方法就不管用了,需要藉助一個類似firefox、chrome瀏覽器的js引擎來對頁面的js代碼做動態解析。
此種情況下,推薦考慮casperJS+phantomjs或slimerJS+phantomjs ,當然諸如selenium之類的也可以考慮。

3、如果爬蟲是涉及大規模網站爬取,效率、擴展性、可維護性等是必須考慮的因素時候
大規模爬蟲爬取涉及諸多問題:多線程並發、I/O機制、分布式爬取、消息通訊、判重機制、任務調度等等,此時候語言和所用框架的選取就具有極大意義了。
PHP對多線程、非同步支持較差,不建議採用。
NodeJS:對一些垂直網站爬取倒可以,但由於分布式爬取、消息通訊等支持較弱,根據自己情況判斷。
Python:強烈建議,對以上問題都有較好支持。尤其是Scrapy框架值得作為第一選擇。優點諸多:支持xpath;基於twisted,性能不錯;有較好的調試工具;
此種情況下,如果還需要做js動態內容的解析,casperjs就不適合了,只有基於諸如chrome V8引擎之類自己做js引擎。
至於C、C++雖然性能不錯,但不推薦,尤其是考慮到成本等諸多因素;對於大部分公司還是建議基於一些開源的框架來做,不要自己發明輪子,做一個簡單的爬蟲容易,但要做一個完備的爬蟲挺難的。

像我搭建的微信公眾號內容聚合的網站 就是基於Scrapy做的,當然還涉及消息隊列等。可以參考下圖:

具體內容可以參考 一個任務調度分發服務的架構

⑶ python與NodeJS推薦學哪個

這個關鍵取決你自身的基礎條件和興趣方向。

Python是個比較成熟的跨平台的通用型腳本語言,有非常完善龐大的內置模塊和第三方擴展模塊。
Python幾乎什麼都能幹,但是自身性能較低。IT自動化運維,網路爬蟲,數據分析是優勢的領域

Node.js採用事件驅動、非同步編程,為網路服務而設計
"Node.js 是伺服器端的 JavaScript 運行環境,它具有無阻塞(non-blocking)和事件驅動(event-driven)等的特色,Node.js 採用 V8 引擎,同樣,Node.js 實現了類似 Apache 和 nginx 的web服務,讓你可以通過它來搭建基於 JavaScript 的 Web App。"

⑷ nodejs和python哪個更好

python相對來說簡單一些,只要好好努力,什麼都不難的,python就是比較好上手,沒有程序知識的人也可以輕松入門

⑸ 寫爬蟲Python,Node.js 相對哪個比較適合

稍微談談我的使用感受,PHP不會,用過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的插件,那麼解析路徑一目瞭然,開發效率奇高。

⑹ python和node.js哪個好,哪一個好學!

node.js的應用面比較窄,主要用於web後台,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開發都很有用。

⑻ 想自學後端,Nodejs 和 Python 哪個更值得一薦

Python ,發布於 25 年前,至今維護。先學這個,文檔多,問題搜的到,豆瓣知乎多家網站經過大規模驗證,然後再學 nodejs

⑼ Python和nodeJS哪個更適合做爬蟲

Python更加適合用做爬蟲,只要幾行代碼就可以實現大部分的功能。

⑽ node.js可以和python交互嗎

可以
1. 把 Electron 當做純瀏覽器用,Python 端可以用 web.py 或者 flask 等做一個伺服器,使用 Ajax 在前端 JS 和 後端 Python 之間通信。
2. 使用 Socket 跨進程通信: Python socket Low-level networking interface,Node.js net。
3. 使用父子進程的 stdin/stdout...Child Process

熱點內容
knd系統編程 發布:2024-05-07 08:55:38 瀏覽:218
大話2無限自動腳本 發布:2024-05-07 08:42:06 瀏覽:78
朋友圈視頻壓縮 發布:2024-05-07 08:33:01 瀏覽:871
MAC賬戶登錄如何進入忘記密碼 發布:2024-05-07 08:14:52 瀏覽:671
相機存儲卡要求格式化 發布:2024-05-07 08:08:44 瀏覽:16
十一代思域哪個配置劃算 發布:2024-05-07 07:59:12 瀏覽:352
鴻蒙系統和安卓系統哪個大 發布:2024-05-07 07:46:37 瀏覽:623
安卓平台用什麼虛擬機 發布:2024-05-07 07:44:14 瀏覽:247
ta柵格演算法 發布:2024-05-07 07:03:23 瀏覽:802
符號源碼 發布:2024-05-07 06:26:09 瀏覽:707