Python與爬蟲的簡(jiǎn)單介紹

本文為《爬著學(xué)Python》系列第一篇文章。


關(guān)于用爬蟲輔助Python的學(xué)習(xí)原因就不再贅述了。直接進(jìn)入正題。

Python

首先是Python(Python - Wikipedia)語言的特點(diǎn),也就是,為什么要學(xué)習(xí)Python?

原因很簡(jiǎn)單,因?yàn)镻ython是一門簡(jiǎn)單的語言,”人生苦短,我用Python“。但是,簡(jiǎn)單的同時(shí)功能強(qiáng)大,這是Python能真正流行的原因。

Python的簡(jiǎn)單體現(xiàn)在:語句清晰簡(jiǎn)潔,結(jié)構(gòu)明了。Python不會(huì)像Java長(zhǎng)得像作文,它甚至不用聲明變量類型,你不需要在語句后面加上;,你不需要一層層的{}包住循環(huán)和函數(shù)……這些,有簡(jiǎn)明的縮寫、人性的語法糖,縮進(jìn)的格式來幫你完成。

Python是腳本語言,這是它簡(jiǎn)單的原因之一,但是它的強(qiáng)大在于它是個(gè)靈活而又完備的腳本語言。比如Javascript同樣作為腳本語言,卻長(zhǎng)時(shí)間難以勝任后端開發(fā)的任務(wù),直到Node.js的出現(xiàn)。要知道,Python在web開發(fā)方面可謂是得心應(yīng)手。雖然這個(gè)問題深究下去還有其他的原因,但在此暫時(shí)按下不表。

為了一窺Python的黑魔法,舉一個(gè)老套的例子,將兩個(gè)數(shù)字變量換值。
在C語言中代碼是這樣的:

void main(){
    int a=2,b=3,c;
    c=a;
    a=b;
    b=c;
    return 0;   
}

或者是這樣的:

void main(){
    int a=2,b=3;
    a=a+b;
    b=a-b;
    a=a-b;
    return 0;
}

然而,在Python中,代碼這樣就可以了:

>>>a = 2
>>>b = 3
>>>a, b = b, a

Python的簡(jiǎn)單暴力顯而易見,不僅僅是語句簡(jiǎn)明,實(shí)現(xiàn)方式上也比C要"人性化"多了。

在現(xiàn)在的開發(fā)中,Python的簡(jiǎn)單暴力在而且豐富的第三方庫幫助下能大大減輕項(xiàng)目的實(shí)現(xiàn)壓力,這是Python越來越受到歡迎的主要原因。我們經(jīng)常有想法,Python能以最便捷的方式用代碼實(shí)現(xiàn)這樣的想法,這是它的價(jià)值所在。

Python的第三方庫非常豐富(PyPI - the Python Package Index),安裝簡(jiǎn)單(pip)。熟練地使用第三方庫是使用Python的一部分,在沒有必要重復(fù)造輪子的時(shí)候,我們完全可以先考慮能不能找到可用的第三方庫簡(jiǎn)化我們的工作。

當(dāng)然,Python也有它局限的地方,比如它的運(yùn)行速度。但是這個(gè)問題其實(shí)倒也不大,把Python節(jié)省的時(shí)間用來優(yōu)化算法,或者把關(guān)鍵的部分用C或其他語言重寫也可以。而且,所謂的"慢",往往是程序設(shè)計(jì)上的問題而不是語言造成的。Python的運(yùn)行速度在我看來是瑕不掩瑜的。Python的另一個(gè)問題在于Python2與Python3的代碼存在一定程度上的斷代,這個(gè)問題說大不大說小也不小,屬于能解決但讓人挺難受的那部分。

爬蟲

以上就算是簡(jiǎn)單介紹一下Python的特點(diǎn)了。接下來簡(jiǎn)單說一說爬蟲(網(wǎng)絡(luò)爬蟲_百度百科)。
其實(shí)爬蟲本身也沒什么好說的,知道他是獲取網(wǎng)頁信息的工具就足夠了,百度百科的介紹就挺好的。我主要就講一講在之后的爬蟲學(xué)習(xí)中會(huì)涉及到的問題吧。

首先是爬蟲的結(jié)構(gòu)與工作原理(圖侵刪)。


從圖上可以比較簡(jiǎn)單地看出爬蟲就是個(gè)重復(fù)訪問網(wǎng)頁獲取內(nèi)容獲取鏈接的一個(gè)工具。在之后接觸到scrapy框架以后我們會(huì)再次給出一個(gè)更加完整的結(jié)構(gòu)。

而我們的學(xué)習(xí)剛開始沒這么復(fù)雜,我們只要能用命令行獲取百度百科的內(nèi)容就算是爬蟲入門了。

之后我們會(huì)了解Python爬蟲各種獲取內(nèi)容、解析內(nèi)容的方式,當(dāng)然,這之間會(huì)插入正則表達(dá)式簡(jiǎn)單的應(yīng)用,而正則式的強(qiáng)大功能會(huì)在更后面的學(xué)習(xí)中接觸。

再后來我們就要學(xué)會(huì)優(yōu)化我們的爬蟲,讓它學(xué)會(huì)登陸,讓它學(xué)會(huì)偽裝自己,讓它不僅僅是爬取也要同時(shí)織網(wǎng)等等。這要求我們要掌握基本的web知識(shí)、數(shù)據(jù)結(jié)構(gòu)知識(shí)、I/O操作知識(shí),這些我們都會(huì)在后面的學(xué)習(xí)中一步步去熟悉。

當(dāng)完成以上的學(xué)習(xí)以后,我們可以構(gòu)建分布式爬蟲,我們可以做一些很極客的事情,我們甚至有可能涉足法律的灰色地帶。但是,前提是我們得要一步步踏實(shí)地學(xué)習(xí)。

雖然昨天第一天就跳票了,但我會(huì)爭(zhēng)取日更。

鏈接

  1. 維基百科Python介紹-Python(programming_language) - Wikipedia
  2. Python第三方庫索引-PyPI - the Python Package Index
  3. 百度百科爬蟲介紹-網(wǎng)絡(luò)爬蟲_百度百科
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容