python函數(shù)架構(gòu),python 架構(gòu)設(shè)計(jì)

Python有哪些技術(shù)上的優(yōu)點(diǎn)?比其他語言好在哪兒?

Python有哪些技術(shù)上的優(yōu)點(diǎn)

池州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),池州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為池州近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的池州做網(wǎng)站的公司定做!

1. 面向?qū)ο蠛秃瘮?shù)式

從根本上講,Python是一種面向?qū)ο蟮恼Z言。它的類模型支持多態(tài)、運(yùn)算符重載和多重繼承等高級(jí)概念,并且以Python特有的簡潔的語法和類型為背景,OOP十分易于使用。事實(shí)上,即使你不懂這些術(shù)語,仍會(huì)發(fā)現(xiàn)學(xué)習(xí)Python比學(xué)習(xí)其他OOP語言要容易得多。

除了作為一種強(qiáng)大的代碼組織和重用手段以外,Python的OOP本質(zhì)使它成為其他面向?qū)ο笙到y(tǒng)語言的理想腳本工具。例如,通過適當(dāng)?shù)恼辰哟a,Python程序可以對(duì)C++、Java和C#的類進(jìn)行子類的定制。

OOP只是Python的一個(gè)選擇而已,這一點(diǎn)非常重要。即使不能立馬成為一個(gè)面向?qū)ο蟾呤?,但你同樣可以繼續(xù)深入學(xué)習(xí)。就像C++一樣,Python既支持面向?qū)ο缶幊桃仓С置嫦蜻^程編程的模式。如果條件允許,其面向?qū)ο蟮墓ぞ呖梢粤⒓磁缮嫌脠?。這對(duì)策略開發(fā)模式十分有用,該模式常用于軟件開發(fā)的設(shè)計(jì)階段。

除了最初的過程式(語句為基礎(chǔ))和面向?qū)ο螅悶榛A(chǔ))的編程范式,Python在最近幾年內(nèi)置了對(duì)函數(shù)式編程的支持——一個(gè)多數(shù)情況下包括生成器、推導(dǎo)、閉包、映射、裝飾器、匿名lambda函數(shù)和第一類函數(shù)對(duì)象的集合。這是對(duì)其本身OOP工具的補(bǔ)充和替代。

2. 免費(fèi)

Python的使用和分發(fā)是完全免費(fèi)的。就像其他的開源軟件一樣,例如,Tcl、Perl、Linux和Apache。你可以從Internet上免費(fèi)獲得Python的源代碼。你可以不受限制地復(fù)制Python,或?qū)⑵淝度肽愕南到y(tǒng)或者隨產(chǎn)品一起發(fā)布。實(shí)際上,如果你愿意的話,甚至可以銷售它的源代碼。

但請(qǐng)別誤會(huì):“免費(fèi)”并不代表“沒有支持”。恰恰相反,Python的在線社區(qū)對(duì)用戶需求的響應(yīng)和商業(yè)軟件一樣快。而且,由于Python完全開放源代碼,提高了開發(fā)者的實(shí)力,并產(chǎn)生了一個(gè)很大的專家團(tuán)隊(duì)。

盡管研究或改變一種程序語言的實(shí)現(xiàn)并不是對(duì)每一個(gè)人來說都那么有趣,但是當(dāng)你知道如果需要的話可以做到這些,該是多么的令人欣慰。你不需要去依賴商業(yè)廠商的智慧,因?yàn)樽罱K的文檔和終極的凈土(源碼)任憑你的使用。

Python的開發(fā)是由社區(qū)驅(qū)動(dòng)的,是Internet大范圍的協(xié)同合作努力的結(jié)果。Python語言的改變必須遵循一套規(guī)范而有約束力的程序(稱作PEP流程),并需要經(jīng)過規(guī)范的測試系統(tǒng)進(jìn)行徹底檢查。正是這樣才使得Python相對(duì)于其他語言和系統(tǒng)可以保守地持續(xù)改進(jìn)。

盡管Python 2.X和Python 3.X版本之間的分裂有力并蓄意地破壞了這項(xiàng)傳統(tǒng),但通常它仍然體現(xiàn)在Python的這兩個(gè)系列內(nèi)部。

3. 可移植

Python的標(biāo)準(zhǔn)實(shí)現(xiàn)是由可移植的ANSI C編寫的,可以在目前所有主流平臺(tái)上編譯和運(yùn)行。例如,如今從掌上電腦(PDA)到超級(jí)計(jì)算機(jī),隨處可見 Python的運(yùn)行。Python可以在下列平臺(tái)上運(yùn)行(這里只是部分列表):

Linux和UNIX系統(tǒng)

微軟Windows(所有現(xiàn)代版本)

Mac OS(包括OS X 和經(jīng)典版)

BeOS、OS/2、VMS和QNX

實(shí)時(shí)操作系統(tǒng),例如VxWorks

Cray超級(jí)計(jì)算機(jī)和IBM大型機(jī)

運(yùn)行Palm OS、PocketPC和Linux的PDA

運(yùn)行 Symbian OS和Windows Mobile 的移動(dòng)電話

游戲終端和iPod

運(yùn)行谷歌安卓系統(tǒng)和蘋果iOS系統(tǒng)的平板和智能手機(jī)

以及更多

除了語言解釋器本身以外,Python發(fā)行時(shí)自帶的標(biāo)準(zhǔn)庫和模塊在實(shí)現(xiàn)上也都盡可能地考慮到了跨平臺(tái)的移植性。此外,Python程序自動(dòng)編譯成可移植的字節(jié)碼,這些字節(jié)碼在已安裝兼容版本Python的平臺(tái)上運(yùn)行的結(jié)果都是相同的。

這些意味著Python程序的核心語言和標(biāo)準(zhǔn)庫可以在Linux、Windows和其他帶有Python解釋器的平臺(tái)上無差別地運(yùn)行。大多數(shù)Python外圍接口都有平臺(tái)相關(guān)的擴(kuò)展(例如COM支持Windows),但是核心語言和庫在任何平臺(tái)都一樣。

就像之前我們提到的那樣,Python還包含了一個(gè)叫作tkinter(Tkinter的2.X版本)的Tk GUI工具包,它可以使Python程序?qū)崿F(xiàn)功能完整的,無須做任何修改即可在所有主流GUI桌面平臺(tái)運(yùn)行的用戶圖形界面。

4. 功能強(qiáng)大

從語言特性的角度來看,Python是一個(gè)混合體。它豐富的工具集使它介于傳統(tǒng)的腳本語言(如Tcl、Scheme和Perl)和系統(tǒng)語言(如C、C++和Java)之間。Python提供了所有腳本語言的簡單和易用性,并且具有那些在編譯語言中才能找到的高級(jí)軟件工程工具。

不像其他腳本語言不同,這種結(jié)合使Python在長期大型的開發(fā)項(xiàng)目中十分有用。下面是一些Python工具箱中的工具簡介:

動(dòng)態(tài)類型

Python在程序運(yùn)行過程中跟蹤對(duì)象的類型,不需要代碼中進(jìn)行關(guān)于復(fù)雜的類型和大小的聲明。事實(shí)上,Python中沒有類型或變量聲明這種做法。因?yàn)镻ython代碼不約束數(shù)據(jù)的類型,它往往自動(dòng)地應(yīng)用了一種廣義上的對(duì)象。

自動(dòng)內(nèi)存管理

Python自動(dòng)為對(duì)象分配空間,并且當(dāng)對(duì)象不再使用時(shí)將自動(dòng)撤銷空間(“垃圾回收”),當(dāng)需要時(shí)自動(dòng)擴(kuò)展或收縮。正如你將學(xué)到的,Python能夠幫你完成底層的內(nèi)存管理。

大型程序支持

為了能建立更大規(guī)模的系統(tǒng),Python包含了模塊、類和異常等工具。這些工具允許你把系統(tǒng)組織為組件,使用OOP重用并定制代碼,并以一種優(yōu)雅的方式處理事件和錯(cuò)誤。前面提到的Python函數(shù)式編程工具,提供了實(shí)現(xiàn)相同目標(biāo)的其他方法。

內(nèi)置對(duì)象類型

Python提供了常用的數(shù)據(jù)結(jié)構(gòu)作為語言的基本組成部分。例如,列表(list)、字典(dictionary)、字符串(string)。我們將會(huì)看到,它們靈活并易于使用。例如,內(nèi)置對(duì)象可以根據(jù)需求擴(kuò)展或收縮,可以任意地組織復(fù)雜的信息等。

內(nèi)置工具

為了對(duì)以上對(duì)象類型進(jìn)行處理,Python自帶了許多強(qiáng)大的標(biāo)準(zhǔn)操作,包括拼接(concatenation)、分片(slice)、排序(sort)和映射(mapping)等。

庫工具

為了完成更多特定的任務(wù),Python預(yù)置了許多預(yù)編碼的庫工具,從正則表達(dá)式匹配到網(wǎng)絡(luò)都支持。當(dāng)你掌握了語言本身,就能在應(yīng)用級(jí)的操作中使用Python的庫工具。

第三方工具

由于Python是開源的,它鼓勵(lì)開發(fā)者提供Python內(nèi)置工具之外的預(yù)編碼工具。你可以在網(wǎng)上找到COM、圖像處理、數(shù)值編程、XML、數(shù)據(jù)庫訪問等許多免費(fèi)的支持工具。

除了這一系列的Python工具外,Python保持了相當(dāng)簡潔的語法和設(shè)計(jì)。綜合這一切得到的就是一個(gè)具有腳本語言所有可用性的強(qiáng)大編程工具。

請(qǐng)點(diǎn)擊輸入圖片描述

5. 可混合

Python程序可以以多種方式輕易地與其他語言編寫的組件“粘接”在一起。例如,Python的C語言API可以幫助Python程序靈活地調(diào)用C程序。這意味著可以根據(jù)需要給Python程序添加功能,或者在其他環(huán)境系統(tǒng)中使用Python。

例如,將Python與C或者C++寫成的庫文件混合起來,使Python成為一個(gè)前端語言和定制工具。就像之前我們所提到過的那樣,這使Python成為一個(gè)很好的快速原型工具;系統(tǒng)可以在開發(fā)初期出于速度考慮使用Python實(shí)現(xiàn),然后轉(zhuǎn)移至C,根據(jù)不同時(shí)期性能的需要逐步實(shí)現(xiàn)系統(tǒng)。

6. 相對(duì)簡單易用

同其他語言(如C++、Java和C#)相比,Python編程對(duì)大多數(shù)用戶來講出奇得簡單。要運(yùn)行Python程序,你只需簡單地鍵入Python程序并運(yùn)行就可以了。不需要其他語言(如C或C++)所必需的編譯和鏈接等中間步驟。

Python可立即執(zhí)行程序,這形成了一種交互式編程體驗(yàn)和不同情況下快速調(diào)整的能力,往往在修改代碼后幾乎能立即看到程序改變后的效果。

當(dāng)然,開發(fā)周期短僅僅是Python易用性的一方面的體現(xiàn)。Python提供了簡潔的語法和強(qiáng)大的內(nèi)置工具。實(shí)際上,Python曾被稱為“可執(zhí)行的偽代碼”。由于它減少了其他工具常見的復(fù)雜性,在實(shí)現(xiàn)相同的功能時(shí),Python程序比采用其他流行語言編寫的程序更為簡單、小巧,也更靈活。

請(qǐng)點(diǎn)擊輸入圖片描述

7. 相對(duì)簡單易學(xué)

這一部分引出了本書的重點(diǎn):尤其同其他廣泛使用的編程語言比較時(shí),Python語言的核心相當(dāng)簡單易學(xué)。實(shí)際上,如果你是一位有經(jīng)驗(yàn)的程序員,你可以期望在幾天內(nèi)寫出小規(guī)模的Python代碼,你也許能在幾個(gè)小時(shí)之內(nèi)習(xí)得Python的一招一式,但是你并不能指望在如此短的時(shí)間內(nèi)成為專家(忘掉市面上的那些宣傳廣告吧)。

當(dāng)然,掌握任何像今天Python這樣的充實(shí)主題都不是一件輕松事,我們將在本書的剩余部分致力于此項(xiàng)任務(wù)。但是為了掌握Python而進(jìn)行的真正投資是非常值得的——最終你會(huì)獲取幾乎在每個(gè)計(jì)算機(jī)應(yīng)用程序領(lǐng)域都適用的編程技能。此外,很多人還發(fā)現(xiàn)Python的學(xué)習(xí)曲線比其他的編程語言更加平緩。

這對(duì)于那些想學(xué)習(xí)語言以在工作中應(yīng)用的專業(yè)人員來說是一個(gè)好消息,同樣對(duì)于那些使用Python層進(jìn)行定制和控制的系統(tǒng)的終端用戶來說,也是一個(gè)好消息。如今,許多系統(tǒng)都依賴于這一事實(shí):用戶可以在沒有或者得到很少支持的情況下就學(xué)到足夠的Python知識(shí)以便當(dāng)場增刪他們的Python定制化代碼。

此外,Python還孕育出一群不以編程為生而以編程為樂的用戶,他們并不需要掌握全面的軟件開發(fā)技巧。盡管Python還是有很多高級(jí)編程工具,但不論對(duì)初學(xué)者還是行家來說,Python的核心語言精髓仍是相當(dāng)簡單的。

8. 以Monty Python命名

好的,在講完這么多技術(shù)方面的優(yōu)勢后,我想再揭露一個(gè)Python世界里面令人驚奇而保守良好的小秘密。

盡管Python的書和圖標(biāo)中有很多爬行動(dòng)物,真相卻是Python以英國喜劇組“Monty Python”命名——這是BBC 在20世紀(jì)70年代喜劇《Monty Python's Flying Circus》的制片方,也是至今仍在流行的少量包括《Monty Python and the Holy Grai》在內(nèi)的大電影的制片方。Python的最初創(chuàng)作者是Monty Python的粉絲,這同其他許多的軟件開發(fā)者一樣(事實(shí)上,這兩個(gè)領(lǐng)域存在某種對(duì)稱性……)。

請(qǐng)點(diǎn)擊輸入圖片描述

▲《Python學(xué)習(xí)手冊(cè)》書封上的爬行動(dòng)物

這段有趣的歷史無疑增加了Python代碼例子的幽默屬性。例如,作為一般變量名命名傳統(tǒng)的“foo”和“bar”在Python世界中變成了“spam”和“eggs”。而在Python中偶爾出現(xiàn)的“Brian”,“ni”和“shrubbery”表現(xiàn)得也同此類似。它甚至影響了Python的整個(gè)社區(qū)。

當(dāng)然了,如果你對(duì)這部喜劇非常熟悉,就能體會(huì)這其中的笑點(diǎn),但如果不熟悉則相反。你不必非得熟悉Monty Python這部劇來了解從劇中獲得靈感的例子(包括你將在本書中看到的許多例子),但至少你現(xiàn)在知道它們的起源了。(嗨——我已經(jīng)告訴你啦。)

02

Python和其他語言比較起來怎么樣

最后,你也許已經(jīng)知道了,人們往往將Python與Perl、Tcl和Javat等語言相比較。這部分總結(jié)這方面的一些普遍共識(shí)。

我想預(yù)先表明我個(gè)人并不喜歡通過詆毀競爭者來獲勝——這在長期是行不通的,而且也不是這里的目的。此外,這并不是一場零和游戲——絕大多數(shù)的程序員在他們的職業(yè)生涯中都會(huì)使用許多語言。盡管如此,編程工具也展示出值得考慮的選擇和權(quán)衡。畢竟,如果Python沒有比它的競爭者提供更多的東西,那么它一開始就不會(huì)被人們使用了。

請(qǐng)點(diǎn)擊輸入圖片描述

我們之前已經(jīng)介紹過性能上的權(quán)衡,那么這里重點(diǎn)談一下功能。盡管下面列舉的這些語言也是值得學(xué)習(xí)和使用的有力工具,但人們通常認(rèn)為Python:

比Tcl強(qiáng)大。Python強(qiáng)有力地支持“大規(guī)模編程”,使其適用于開發(fā)大型系統(tǒng),它的應(yīng)用程序庫也更加豐富。

比Perl更具可讀性。Python有著簡潔的語法和簡單連貫的設(shè)計(jì),這反過來使得Python更具可讀性和更易于維護(hù),同時(shí)有助于減少程序bug。

比Java和C#更簡單、更易于使用。Python是一門腳本語言,但Java和C#兩者從像C++這樣更加大型的OOP系統(tǒng)語言中繼承了許多語法和復(fù)雜性。

比C++更簡單、更易于使用。Python代碼比等效的C++代碼更加簡單,長度只有其五分之一到三分之一。盡管作為腳本語言,Python有時(shí)能扮演許多不同的角色。

比C更加簡單和高級(jí)。Python遠(yuǎn)離底層硬件架構(gòu)從而降低了代碼復(fù)雜性,擁有更好的組織結(jié)構(gòu),并比C(C++的祖先)更加友善。

比Visual Basic更強(qiáng)大,用途廣泛,也更具備跨平臺(tái)特性。Python是更加廣泛使用的更豐富的語言,它的開源本質(zhì)意味著它不可能被某一個(gè)公司所掌控。

比PHP更易懂并且用途更廣。Python也用來構(gòu)建Web站點(diǎn),但是,它也應(yīng)用于幾乎每個(gè)計(jì)算機(jī)領(lǐng)域,從機(jī)器人到電影動(dòng)畫和游戲。

比JavaScript更強(qiáng)大和用途廣泛。Python有一個(gè)更大的工具集,也并不是牢牢地束縛于Web開發(fā)。它也用于科學(xué)建模、儀器調(diào)試等。

比Ruby更具可讀性,并更為人們所接受。Python的語法混亂更少,尤其在較復(fù)雜代碼中,同時(shí)它的OOP對(duì)用戶和和不太使用OOP的工程中是完全可選的。

比Lua更成熟和受到更廣泛關(guān)注。Python更加龐大的特性集合和更加擴(kuò)展的庫支持給予其比Lua(一門和Tcl一樣的嵌入式“膠水”語言)更加寬廣的視野。

比SmallTalk、Lisp和Prolog更不晦澀。Python擁有這類函數(shù)式語言的動(dòng)態(tài)品味,但是也擁有開發(fā)者和定制系統(tǒng)終端用戶都可接受的傳統(tǒng)語法。

特別是對(duì)不僅僅用于個(gè)人掃描文本文件,未來會(huì)被人們(包括你在內(nèi))讀到的程序而言,很多人會(huì)發(fā)現(xiàn)Python比目前任何可用的腳本或編程語言都劃得來。不僅如此,除非你的應(yīng)用要求最尖端的性能,Python往往是C、C++和Java等系統(tǒng)開發(fā)語言的一個(gè)不錯(cuò)的替代品:Python代碼能夠常常實(shí)現(xiàn)相同的目標(biāo),卻會(huì)減少很多編寫、調(diào)試和維護(hù)的麻煩。

當(dāng)然,本文作者從1992年就已經(jīng)是Python的正式布道者了,所以盡可能接受這些意見吧(其他語言的擁護(hù)者的利益可能會(huì)受到些損失)。然而,所有這些觀點(diǎn)的確代表了投入時(shí)間和精力來探索Python的眾多開發(fā)者的一致看法。

關(guān)于作者:Mark Lutz是一位世界級(jí)的Python培訓(xùn)講師。他是Python暢銷書籍的作者,同時(shí)從1992年起就成為Python社區(qū)的引領(lǐng)者,有著30余年的軟件開發(fā)經(jīng)驗(yàn)。

本文摘編自《Python學(xué)習(xí)手冊(cè)》(原書第5版),經(jīng)出版方授權(quán)發(fā)布。

請(qǐng)點(diǎn)擊輸入圖片描述

Python的框架可以用來做什么

Python的應(yīng)用方向

1. 常規(guī)軟件開發(fā)

Python支持函數(shù)式編程和OOP面向?qū)ο缶幊?,能夠承?dān)任何種類軟件的開發(fā)工作,因此常規(guī)的軟件開發(fā)、腳本編寫、網(wǎng)絡(luò)編程等都屬于標(biāo)配能力。

2. 科學(xué)計(jì)算

隨著NumPy, SciPy, Matplotlib, Enthought librarys等眾多程序庫的開發(fā),Python越來越適合于做科學(xué)計(jì)算、繪制高質(zhì)量的2D和3D圖像。和科學(xué)計(jì)算領(lǐng)域最流行的商業(yè)軟件Matlab相比,Python是一門通用的程序設(shè)計(jì)語言,比Matlab所采用的腳本語言的應(yīng)用范圍更廣泛,有更多的程序庫的支持。雖然Matlab中的許多高級(jí)功能和toolbox目前還是無法替代的,不過在日常的科研開發(fā)之中仍然有很多的工作是可以用Python代勞的。

3. 自動(dòng)化運(yùn)維

這幾乎是Python應(yīng)用的自留地,作為運(yùn)維工程師首選的編程語言,Python在自動(dòng)化運(yùn)維方面已經(jīng)深入人心,比如Saltstack和Ansible都是大名鼎鼎的自動(dòng)化平臺(tái)。

4. 云計(jì)算

開源云計(jì)算解決方案OpenStack就是基于Python開發(fā)的,搞云計(jì)算的同學(xué)都懂的。

5. WEB開發(fā)

基于Python的Web開發(fā)框架不要太多,比如耳熟能詳?shù)腄jango,還有Tornado,F(xiàn)lask。其中的Python+Django架構(gòu),應(yīng)用范圍非常廣,開發(fā)速度非???,學(xué)習(xí)門檻也很低,能夠幫助你快速的搭建起可用的WEB服務(wù)。

6. 網(wǎng)絡(luò)爬蟲

也稱網(wǎng)絡(luò)蜘蛛,是大數(shù)據(jù)行業(yè)獲取數(shù)據(jù)的核心工具。沒有網(wǎng)絡(luò)爬蟲自動(dòng)地、不分晝夜地、高智能地在互聯(lián)網(wǎng)上爬取免費(fèi)的數(shù)據(jù),那些大數(shù)據(jù)相關(guān)的公司恐怕要少四分之三。能夠編寫網(wǎng)絡(luò)爬蟲的編程語言有不少,但Python絕對(duì)是其中的主流之一,其Scripy爬蟲框架應(yīng)用非常廣泛。

7. 數(shù)據(jù)分析

在大量數(shù)據(jù)的基礎(chǔ)上,結(jié)合科學(xué)計(jì)算、機(jī)器學(xué)習(xí)等技術(shù),對(duì)數(shù)據(jù)進(jìn)行清洗、去重、規(guī)格化和針對(duì)性的分析是大數(shù)據(jù)行業(yè)的基石。Python是數(shù)據(jù)分析的主流語言之一。

8. 人工智能

Python在人工智能大范疇領(lǐng)域內(nèi)的機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)等方面都是主流的編程語言,得到廣泛的支持和應(yīng)用。

當(dāng)然,除了以上的主流和前沿領(lǐng)域,Python還在其他傳統(tǒng)或特殊行業(yè)起著重要的作用。

Python中的爬蟲框架有哪些呢?

實(shí)現(xiàn)爬蟲技術(shù)的編程環(huán)境有很多種,Java、Python、C++等都可以用來爬蟲。但很多人選擇Python來寫爬蟲,為什么呢?因?yàn)镻ython確實(shí)很適合做爬蟲,豐富的第三方庫十分強(qiáng)大,簡單幾行代碼便可實(shí)現(xiàn)你想要的功能。更重要的,Python也是數(shù)據(jù)挖掘和分析的好能手。那么,Python爬蟲一般用什么框架比較好?

一般來講,只有在遇到比較大型的需求時(shí),才會(huì)使用Python爬蟲框架。這樣的做的主要目的,是為了方便管理以及擴(kuò)展。本文我將向大家推薦十個(gè)Python爬蟲框架。

1、Scrapy:Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。它是很強(qiáng)大的爬蟲框架,可以滿足簡單的頁面爬取,比如可以明確獲知url pattern的情況。用這個(gè)框架可以輕松爬下來如亞馬遜商品信息之類的數(shù)據(jù)。但是對(duì)于稍微復(fù)雜一點(diǎn)的頁面,如weibo的頁面信息,這個(gè)框架就滿足不了需求了。它的特性有:HTML, XML源數(shù)據(jù) 選擇及提取 的內(nèi)置支持;提供了一系列在spider之間共享的可復(fù)用的過濾器(即 Item Loaders),對(duì)智能處理爬取數(shù)據(jù)提供了內(nèi)置支持。

2、Crawley:高速爬取對(duì)應(yīng)網(wǎng)站的內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫,數(shù)據(jù)可以導(dǎo)出為JSON、XML等。

3、Portia:是一個(gè)開源可視化爬蟲工具,可讓使用者在不需要任何編程知識(shí)的情況下爬取網(wǎng)站!簡單地注釋自己感興趣的頁面,Portia將創(chuàng)建一個(gè)蜘蛛來從類似的頁面提取數(shù)據(jù)。簡單來講,它是基于scrapy內(nèi)核;可視化爬取內(nèi)容,不需要任何開發(fā)專業(yè)知識(shí);動(dòng)態(tài)匹配相同模板的內(nèi)容。

4、newspaper:可以用來提取新聞、文章和內(nèi)容分析。使用多線程,支持10多種語言等。作者從requests庫的簡潔與強(qiáng)大得到靈感,使用Python開發(fā)的可用于提取文章內(nèi)容的程序。支持10多種語言并且所有的都是unicode編碼。

5、Python-goose:Java寫的文章提取工具。Python-goose框架可提取的信息包括:文章主體內(nèi)容、文章主要圖片、文章中嵌入的任何Youtube/Vimeo視頻、元描述、元標(biāo)簽。

6、Beautiful Soup:名氣大,整合了一些常用爬蟲需求。它是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式.Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間。Beautiful Soup的缺點(diǎn)是不能加載JS。

7、mechanize:它的優(yōu)點(diǎn)是可以加載JS。當(dāng)然它也有缺點(diǎn),比如文檔嚴(yán)重缺失。不過通過官方的example以及人肉嘗試的方法,還是勉強(qiáng)能用的。

8、selenium:這是一個(gè)調(diào)用瀏覽器的driver,通過這個(gè)庫你可以直接調(diào)用瀏覽器完成某些操作,比如輸入驗(yàn)證碼。Selenium是自動(dòng)化測試工具,它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox等主流界面式瀏覽器,如果在這些瀏覽器里面安裝一個(gè) Selenium 的插件,可以方便地實(shí)現(xiàn)Web界面的測試. Selenium支持瀏覽器驅(qū)動(dòng)。Selenium支持多種語言開發(fā),比如 Java,C,Ruby等等,PhantomJS 用來渲染解析JS,Selenium 用來驅(qū)動(dòng)以及與Python的對(duì)接,Python進(jìn)行后期的處理。

9、cola:是一個(gè)分布式的爬蟲框架,對(duì)于用戶來說,只需編寫幾個(gè)特定的函數(shù),而無需關(guān)注分布式運(yùn)行的細(xì)節(jié)。任務(wù)會(huì)自動(dòng)分配到多臺(tái)機(jī)器上,整個(gè)過程對(duì)用戶是透明的。項(xiàng)目整體設(shè)計(jì)有點(diǎn)糟,模塊間耦合度較高。

10、PySpider:一個(gè)國人編寫的強(qiáng)大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強(qiáng)大的WebUI。采用Python語言編寫,分布式架構(gòu),支持多種數(shù)據(jù)庫后端,強(qiáng)大的WebUI支持腳本編輯器,任務(wù)監(jiān)視器,項(xiàng)目管理器以及結(jié)果查看器。Python腳本控制,可以用任何你喜歡的html解析包。

68 個(gè) Python 內(nèi)置函數(shù)詳解

內(nèi)置函數(shù)就是Python給你提供的,拿來直接用的函數(shù),比如print.,input等。

截止到python版本3.6.2 ,python一共提供了68個(gè)內(nèi)置函數(shù),具體如下

本文將這68個(gè)內(nèi)置函數(shù)綜合整理為12大類,正在學(xué)習(xí)Python基礎(chǔ)的讀者一定不要錯(cuò)過,建議收藏學(xué)習(xí)!

(1)列表和元組

(2)相關(guān)內(nèi)置函數(shù)

(3)字符串

frozenset 創(chuàng)建一個(gè)凍結(jié)的集合,凍結(jié)的集合不能進(jìn)行添加和刪除操作。

語法:sorted(Iterable, key=函數(shù)(排序規(guī)則), reverse=False)

語法:fiter(function. Iterable)

function: 用來篩選的函數(shù). 在?lter中會(huì)自動(dòng)的把iterable中的元素傳遞給function. 然后根據(jù)function返回的True或者False來判斷是否保留留此項(xiàng)數(shù)據(jù) , Iterable: 可迭代對(duì)象

搜索公眾號(hào)頂級(jí)架構(gòu)師后臺(tái)回復(fù)“面試”,送你一份驚喜禮包。

語法 : map(function, iterable)

可以對(duì)可迭代對(duì)象中的每一個(gè)元素進(jìn)行映射. 分別去執(zhí)行 function

hash : 獲取到對(duì)象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空間換的時(shí)間 比較耗費(fèi)內(nèi)存

文章標(biāo)題:python函數(shù)架構(gòu),python 架構(gòu)設(shè)計(jì)
鏈接URL:http://muchs.cn/article46/hcihhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站營銷網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司