域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)
本文是面向SEO人群的Python程序語(yǔ)言入門(mén)教程,也適用于其他沒(méi)有程序基礎(chǔ)但想學(xué)習(xí)些程序,以解決簡(jiǎn)單的實(shí)際應(yīng)用需求的人群。在后面會(huì)盡量用最基礎(chǔ)的角度來(lái)介紹這門(mén)語(yǔ)言。
本來(lái)打算從網(wǎng)上找一篇入門(mén)教程,但因?yàn)镻ython很少是程序員的第一次接觸程序所學(xué)的語(yǔ)言,所以網(wǎng)上現(xiàn)有的教程多不是很基礎(chǔ),還是決定自己寫(xiě)下這些。
如果沒(méi)有程序基礎(chǔ)的話,可能會(huì)覺(jué)得本文涵蓋的內(nèi)容有點(diǎn)多。對(duì)照大學(xué)里面常教的C語(yǔ)言的教學(xué)速度,本文大約有四五個(gè)課時(shí)的內(nèi)容;對(duì)照網(wǎng)上程序類(lèi)的視頻教程,大致相當(dāng)于兩三個(gè)小時(shí)的內(nèi)容;對(duì)于翻一本程序書(shū)籍,大約相當(dāng)于翻一個(gè)小時(shí)書(shū)。也因此,如果有深入學(xué)習(xí)的打算的話,為了效率還是推薦看書(shū)。
如果暫時(shí)不能理解本文中的一些內(nèi)容也沒(méi)關(guān)系,因?yàn)槎际且恍┙?jīng)常會(huì)用到的基礎(chǔ)知識(shí),在實(shí)際編寫(xiě)代碼的過(guò)程中會(huì)一直遇到。后面會(huì)大約有兩三篇關(guān)于實(shí)用代碼編寫(xiě)的文章,可以選擇那時(shí)再對(duì)這些知識(shí)加深印象。
但如果是覺(jué)得技術(shù)對(duì)于SEO沒(méi)有必要而對(duì)本文沒(méi)有興趣的話,試問(wèn)打算將SEO作為自己多久的職業(yè)?如果打算真正將它做好的話,在至少有上萬(wàn)小時(shí)需要用去的精力里面,從里面抽幾十幾百小時(shí)去學(xué)習(xí)些技術(shù)應(yīng)該是合情合理的。
若因文章有什么沒(méi)表述清楚而導(dǎo)致無(wú)法理解,請(qǐng)務(wù)必幫忙提出。第一次寫(xiě)程序類(lèi)的較完整的教程,難免有疏漏之處。
為什么學(xué)習(xí)Python
如果決定學(xué)習(xí)一些技術(shù)來(lái)輔助SEO的話,對(duì)于程序語(yǔ)言至少在我看來(lái)Python可以算是首選。
其一、Python入門(mén)相對(duì)簡(jiǎn)單
如果誰(shuí)在大學(xué)課程里面接觸過(guò)C語(yǔ)言但對(duì)程序了解不多的話,或許會(huì)覺(jué)得程序就是像C那么麻煩,其實(shí)不然,學(xué)了具有美感的Python代碼以后就會(huì)知道C代碼又臭又長(zhǎng)。就算完全沒(méi)接觸過(guò)程序也沒(méi)關(guān)系,Python本身就適合作為程序的入門(mén)選擇。
我雖然很早就有寫(xiě)程序,但那時(shí)是興趣使然,從未深入過(guò),正式接觸程序是接觸SEO以后的事情,大約學(xué)了幾個(gè)小時(shí)以后就能寫(xiě)些簡(jiǎn)單的采集程序,到現(xiàn)在只要能想到需求就很少有技術(shù)無(wú)法實(shí)現(xiàn)的。所以沒(méi)什么有基礎(chǔ)沒(méi)基礎(chǔ)的問(wèn)題在,無(wú)論什么的基礎(chǔ)都是需要自己打下的。
其二、Python代碼非常靈活
來(lái)看一段非常常用的代碼示例,如果沒(méi)有程序基礎(chǔ)的話會(huì)看不懂這些代碼,但暫時(shí)沒(méi)關(guān)系,看代碼行數(shù)也能對(duì)比出代碼簡(jiǎn)潔性。
PHP:
<?php
$list_1
=
array
(1,2);
$list_2
=
array
();
foreach
(
$list_1
as
$current
) {
array_push
(
$list_2
,
$current
+1);
}
print_r(
$list_2
);
?>
Python:
1
2
3
|
list_1 = [ 1 , 2 ] list_2 = [current + 1 for current in list_1] print list_2 |
Python代碼的第2行叫做“列表推導(dǎo)”,它提供了不少像這樣便利的語(yǔ)言特性可以使得代碼非常簡(jiǎn)潔。
盡管語(yǔ)法靈活并非總是好事,靈活的代碼寫(xiě)法意味著每個(gè)人寫(xiě)出來(lái)的代碼往往風(fēng)格迥異,會(huì)把團(tuán)隊(duì)成員的水平差距拉大而不利于團(tuán)隊(duì)開(kāi)發(fā)。但對(duì)于小型SEO應(yīng)用需求一般都是個(gè)人開(kāi)發(fā),此時(shí)代碼的書(shū)寫(xiě)效率比起團(tuán)隊(duì)合作性而言更重要。
其三、Python使用廣泛
Python在程序語(yǔ)言里面受歡迎的程度大約是5-10位左右。排在其之前的有C#, Java, PHP等,但很多時(shí)候不是因?yàn)樗鼈兏鼜?qiáng)大,而是因?yàn)榍懊嫣岬降脑颍鼈兊拇a顯得相對(duì)不是很靈活從而適合團(tuán)隊(duì)開(kāi)發(fā),所以才更受歡迎。
一般來(lái)說(shuō),多數(shù)提供API的網(wǎng)絡(luò)服務(wù)都會(huì)提供Python接口(如百度網(wǎng)盟、Amazon云服務(wù)等),而另一些比Python某些方面更強(qiáng)的語(yǔ)言則沒(méi)有這么廣泛的支持度,比如代碼更加靈活一些的GO語(yǔ)言。(多數(shù)Web服務(wù)的API接口有:C#、PHP、Java、Python、Ruby、Perl,所以一般情況下選擇其中至少一種語(yǔ)言學(xué)習(xí))
Python的模塊也非常多,有許多既有模塊意味著可以少做很多事情。比如下載一個(gè)網(wǎng)頁(yè),在很多語(yǔ)言里面都需要5-10行代碼,而Python僅需兩行:
import
urllib2
print
urllib2.urlopen(
''
).read()
另外有意思的是以前Google限制過(guò)自己內(nèi)部使用Python語(yǔ)言進(jìn)行開(kāi)發(fā)。原因有二:一、因?yàn)镻ython編寫(xiě)效率高,之前被其過(guò)多的運(yùn)用;二、Python語(yǔ)言的執(zhí)行效率較慢。而對(duì)于SEO,卻正是最需要注重編寫(xiě)效率而一般無(wú)需在意執(zhí)行效率的。
至此廢話了不少,但興趣往往是學(xué)習(xí)的最好動(dòng)力,希望沒(méi)有白白廢話。
安裝環(huán)境與配置
Python程序和普通程序略有不一樣,通常情況下沒(méi)有可以直接在Windows下面雙擊運(yùn)行的exe文件,雖然并非無(wú)法編譯成exe但相對(duì)較麻煩,實(shí)際運(yùn)用中很少會(huì)去如此操作。
Python程序就是一段文字代碼,保存到后綴名為.py的文件里面。在電腦安裝了Python的運(yùn)行環(huán)境以后,方可以運(yùn)行py文件。(其實(shí)很多程序都依賴(lài)于運(yùn)行環(huán)境,最常見(jiàn)的是.net Framework,只不過(guò)這個(gè)在Windows上預(yù)裝了,一般感覺(jué)不到罷了)
對(duì)于Windows系統(tǒng)需要安裝運(yùn)行環(huán)境,Linux系統(tǒng)則一般自帶Python無(wú)需配置。
Python運(yùn)行環(huán)境的下載鏈接為:
在這個(gè)頁(yè)面上,通常是在第一個(gè)下載鏈接,尋找并下載:Python 2.7.x Windows Installer (Windows binary — does not include source)
需要注意的是下載的最好是2.7.x版本(x代表任意數(shù)值,2.7這個(gè)大版本都是類(lèi)似的),而Python 3以上的版本和先前版本區(qū)別較大,對(duì)于初學(xué)者不建議使用。
下載后安裝,沒(méi)什么需要特別注意的地方。一般安裝在默認(rèn)路徑,即c:\python27\,不要將之放在目錄層級(jí)很深的文件夾,不然運(yùn)行的時(shí)候比較麻煩。
操作系統(tǒng)
前面已經(jīng)提到,Python可以在Windows及Linux系統(tǒng)下運(yùn)行,它還支持更多系統(tǒng),如Mac等,甚至也可以在越獄過(guò)的iPhone等設(shè)備上面編寫(xiě)并運(yùn)行Python程序。
但因?yàn)镻ython的一個(gè)主要強(qiáng)大之處在于其模塊的支持,有了模塊就可以方便的做很多事情。而模塊的配置在Windows等系統(tǒng)里面往往有些麻煩,Linux往往容易得多,所以過(guò)了入門(mén)階段以后,推薦在Linux環(huán)境下進(jìn)行開(kāi)發(fā)。
Linux環(huán)境的搭建有三種選擇:
1.本機(jī)安裝Linux系統(tǒng)。適合在Linux下長(zhǎng)期工作的人,需要對(duì)Linux的基礎(chǔ)知識(shí)有一定的了解。主要缺點(diǎn)是總有些Windows里面才能運(yùn)行的程序,偶爾需要切換系統(tǒng)。我主要是在這樣的環(huán)境下工作。
2.在Windows里面安裝VMware等虛擬機(jī),然后在虛擬機(jī)里面安裝使用Linux。適合初學(xué)者,但因?yàn)樘摂M機(jī)的關(guān)系,除非計(jì)算機(jī)配置很好,不然兩邊系統(tǒng)的運(yùn)行效率都會(huì)比較低下。且虛擬機(jī)不利于塑造學(xué)習(xí)Linux的氣氛,因?yàn)橛锰摂M機(jī)的時(shí)候碰到問(wèn)題,多數(shù)人會(huì)傾向用Windows解決而非用Linux,那么就較難熟悉它。個(gè)人不怎么推薦這種選擇。
3.買(mǎi)一臺(tái)Linux的VPS,使用SSH遠(yuǎn)程操作。主要優(yōu)點(diǎn)是在工作及家里都可以很方便的連上服務(wù)器,不用每天把程序、數(shù)據(jù)等隨著U盤(pán)之類(lèi)的帶來(lái)帶去;也可以在不影響Windows使用的情況下使用Linux。但缺點(diǎn)同樣明顯,沒(méi)有圖形界面對(duì)入門(mén)者不友好;因?yàn)榫W(wǎng)絡(luò)延時(shí)的關(guān)系,寫(xiě)代碼的效率經(jīng)常受影響等等。對(duì)于初學(xué)者,個(gè)人比較推薦這個(gè)解決方案。
至于VPS的購(gòu)買(mǎi),推薦Linode或PhotonVPS等,大約每月50-150RMB能買(mǎi)一個(gè)可以用來(lái)書(shū)寫(xiě)運(yùn)行普通程序的VPS,也可以同時(shí)在上面放兩三個(gè)小網(wǎng)站。
Linux有很多發(fā)行版可以選擇來(lái)安裝,如Ubuntu,F(xiàn)edora等。
對(duì)于在本機(jī)上搭建Linux環(huán)境時(shí),因?yàn)閾碛袌D形界面,若是工作為主要目的,推薦安裝Fedora。它和服務(wù)器最常用的CentOS系統(tǒng)同出Red Hat系,很多地方比較接近,熟悉它對(duì)于熟悉CentOS也有較大助益。
如果在本機(jī)安裝,且有時(shí)會(huì)將Linux系統(tǒng)用作觀看視頻等娛樂(lè)之用的話,推薦Ubuntu,它在日常使用方面略勝Fedora一籌。
對(duì)于VPS上面搭建Linux,則推薦CentOS系統(tǒng),因?yàn)樗褂米顝V泛,所以各種軟件對(duì)其的支持往往更好。
對(duì)應(yīng)Linux環(huán)境解決方案1,一般使用U盤(pán)加載iso鏡像進(jìn)行安裝;對(duì)于解決方案2,一般直接由虛擬機(jī)軟件加載iso鏡像安裝;對(duì)于解決方案3,一般VPS都可在其后臺(tái)直接選擇操作系統(tǒng)無(wú)需自己安裝,比較方便。
編輯器
書(shū)寫(xiě)代碼前面首先需要有一個(gè)合適的編輯器。盡管Windows自帶的記事本也不是不可以使用,但編寫(xiě)程序時(shí)會(huì)非常不順手。
對(duì)于Windows系統(tǒng)的編輯器,較簡(jiǎn)單的我比較推薦Notepad++,當(dāng)然也可以選擇更流行的UltraEdit。
也可以使用IDE,這是用來(lái)開(kāi)發(fā)軟件項(xiàng)目的集成環(huán)境的統(tǒng)稱(chēng),它在開(kāi)發(fā)大型項(xiàng)目時(shí)具有較大優(yōu)勢(shì),但在處理小型需求時(shí)可能顯得略有不靈活。IDE里面比較好的有Eclipse,加上PyDev插件即可開(kāi)發(fā)Python程序,它在Windows和Linux里面皆可以使用。
如果平常需要書(shū)寫(xiě)的代碼量很大,或是對(duì)自己的學(xué)習(xí)能力較有自信的話,對(duì)于Linux推薦Vim,Windows則推薦gVim(Vim的圖形界面)。它和普通編輯器書(shū)寫(xiě)代碼有極大的不同之處,往往需要幾天的學(xué)習(xí)時(shí)間與幾個(gè)月的熟練時(shí)間,但書(shū)寫(xiě)代碼的效率一般可以快不少。
開(kāi)始編寫(xiě)程序
Hello World!
“Hello World”最早的出處是計(jì)算機(jī)領(lǐng)域的最經(jīng)典書(shū)籍之一——《The C Programming Language》,后來(lái)被廣泛沿用。”Hello World”程序的目的只是在屏幕上輸出一個(gè)”Hello World”,盡管很簡(jiǎn)單,當(dāng)它作為每個(gè)人第一個(gè)所寫(xiě)的程序時(shí)還是有著較大的意義。#p#副標(biāo)題#e#
打開(kāi)編輯器,輸入一行:(友情提示:復(fù)制粘貼不利記憶)
print
"Hello World!"
完畢。保存文件到c:\hello.py(路徑隨意)。
按Win + R快捷鍵,打開(kāi)“運(yùn)行”,輸入CMD,回車(chē),打開(kāi)命令行提示符。(Linux圖形界面的話是Ctrl+Alt+T來(lái)打開(kāi)終端)
輸入:
(Windows)
c:\python27\python.exe c:\hello.py
(Linux)
python 路徑/hello.py
可以看到程序運(yùn)行并顯示了一行“Hello World!”。至此,第一個(gè)程序完成了。
變量與賦值
1
s
=
'Hello World!'
print
s
程序輸出:
Hello World!
上述代碼,s稱(chēng)為變量;第一行所做的操作叫做賦值。
再來(lái)個(gè)例子加深印象:
2
3
|
a = 1 b = 2 print a + b |
程序輸出:
3
函數(shù)
def
hello(name):
s
=
'Hello '
+
name
+
'!'
return
s
print
hello(
'world'
)
print
hello(
'semwatch'
)
程序輸出:
Hello world!
Hello semwatch!
函數(shù)是用來(lái)包裝一系列的行為的,通過(guò)傳遞一個(gè)或多個(gè)參數(shù)進(jìn)入函數(shù)(def hello(name)),然后函數(shù)再返回一個(gè)計(jì)算之后的數(shù)值(return s)。
于是print hello(‘world’)就相當(dāng)于輸出hello函數(shù)運(yùn)行之后的運(yùn)算結(jié)果,即輸出Hello world!
可以再看這個(gè)例子來(lái)加深理解:
def
add_num(a, b)
return
a
+
b
print
add_num(
1
,
2
)
print
add_num(
2
,
3
)
程序輸出:
3
5
循環(huán)及判斷
后面提到的for循環(huán)、while循環(huán)及if判斷,這是所有程序語(yǔ)言里面的基礎(chǔ),務(wù)必完全掌握。
(Python里面沒(méi)有其他語(yǔ)言常有的do while循環(huán),也沒(méi)switch case判斷)#p#副標(biāo)題#e#
for循環(huán):
PHP范例:
<?php
for
(
$i
=0;
$i
<10;
$i
++) {
echo
"$i\n"
;
}
?>
之所以這里舉一個(gè)PHP的例子,是因?yàn)槎鄶?shù)程序語(yǔ)言的for循環(huán)都和該例是類(lèi)似的語(yǔ)法,先以這種形式舉例。
應(yīng)該較容易理解,給變量i賦值0($i=0),每次循環(huán)的時(shí)候+1($i++),在i小于10的時(shí)候就一直循環(huán)($i<10),所以循環(huán)10次。
echo語(yǔ)句負(fù)責(zé)把每次循環(huán)時(shí)候的數(shù)字輸出,此例中會(huì)依次輸出0-9這些數(shù)字,不過(guò)沒(méi)必要研究echo語(yǔ)法,只需理解for循環(huán)的概念就行了。
Python的for循環(huán)語(yǔ)法比較另類(lèi),但也很簡(jiǎn)潔:
1
2
|
for i in range ( 10 ): print i |
這兩句語(yǔ)句會(huì)和前面一樣,依次輸出0-9這些數(shù)字,且print語(yǔ)句會(huì)自動(dòng)每次輸出后換行。
while循環(huán):
i
=
0
while
i <
10
:
i
=
i
+
1
print
i
代碼的意思是,先給i賦值0,然后當(dāng)i小于10的時(shí)候,不斷執(zhí)行循環(huán)體里面的內(nèi)容。此處即為將i的值加1,并輸出i。
運(yùn)行后輸出的結(jié)果依次是0-9幾個(gè)數(shù)字。
if判斷:
i
=
1
if
i <
2
:
print
"i<2"
else
:
print
"i>=2"
程序輸出:
i<2
程序先給i賦值1,然后判斷i是否小于2,如果小于2則輸出i<2,不然輸出i>=2。
另外等于和不等于的判斷符號(hào)是如下的:
i
=
1
if
i
=
=
1
:
print
"i=1"
elif
i !
=
1
:
print
"i!=1"
等于是==符號(hào),這點(diǎn)容易混淆。使用=符號(hào)在多數(shù)語(yǔ)言里面會(huì)產(chǎn)生一些問(wèn)題,而在Python里面會(huì)直接視為代碼錯(cuò)誤。而不等于符號(hào)是!=,也可以使用<>,但<>號(hào)在如今的程序語(yǔ)言里面使用越來(lái)越少,也可能在Python的日后版本里被棄用,所以一般推薦使用!=。
上面代碼中第三行elif是else if的簡(jiǎn)寫(xiě)。意為如果i==1沒(méi)有滿(mǎn)足的話,就繼續(xù)判斷i!=1是否滿(mǎn)足。
列表與字典
多數(shù)語(yǔ)言都有“數(shù)組”,它是一個(gè)存著多個(gè)數(shù)值的變量。而Python沒(méi)有,類(lèi)似的是“列表”和“字典”等。
如果有PHP基礎(chǔ)的話,看下以下對(duì)比就可以很快理解它們:
列表:
PHP
<?php
$l
=
array
(1,2,3);
?>
Python
l
=
[
1
,
2
,
3
]
字典:
PHP
<?php
$d
=
array
(
'a'
=> 1,
'b'
=> 2,
'c'
=> 3,
);
?>
Python
d
=
{
'a'
:
1
,
'b'
:
2
,
'c'
:
3
,
}
如果沒(méi)有其他語(yǔ)言基礎(chǔ)的話,通過(guò)實(shí)際代碼來(lái)理解列表及字典或許更合適。
列表:
1
2
3
|
l = [ 1 , 2 , 3 ] for current in l: print current |
運(yùn)行的結(jié)果會(huì)依次輸出1-3這些數(shù)字。(Python里面沒(méi)有PHP的foreach語(yǔ)法,全都使用for完成)#p#副標(biāo)題#e#
字典:
d
=
{
'a'
:
1
,
'b'
:
2
,
'c'
:
3
,
}
for
key
in
d:
print
key
print
d[key]
運(yùn)行的結(jié)果會(huì)輸出a1b2c3,分六行顯示。
解釋下字典,字典的結(jié)構(gòu)是這樣的:
dict = {key: value, key2: value2, …}
for循環(huán)可以在每次循環(huán)的時(shí)候,把相應(yīng)的key賦值給變量,如果要訪問(wèn)對(duì)應(yīng)的value,就需要使用類(lèi)似dict[key]這樣的,即尋找dict里面對(duì)應(yīng)key的value。
類(lèi)似的,列表也有類(lèi)似操作,如:
l
=
[
1
,
2
,
3
]
print
l[
1
]
運(yùn)行輸出:
2
它的意思是輸出列表l的第1項(xiàng)。需要注意的是,對(duì)于絕大多數(shù)程序語(yǔ)言,都是從第0項(xiàng)開(kāi)始算的。即這里l[0]是1,l[1]是2,l[2]是3。
字符串及切片
字符串如其名,是一串字符。如print “Hello World!”就是輸出字符串Hello World!。Python里面的字符串比較特殊,它和列表一樣屬于序列類(lèi)型,很多使用方法上和列表一樣。
s
=
"abc"
print
s[
1
]
運(yùn)行結(jié)果會(huì)輸出b。
根據(jù)這樣的特性,可以衍生出一些簡(jiǎn)潔的代碼運(yùn)用。比如要輸出”Hello World!”這個(gè)字符串的前5個(gè)字符的話,多數(shù)語(yǔ)言會(huì)和PHP類(lèi)似是這樣做的:
<?php
$s
=
"Hello World!"
;
echo
substr
(
$s
,0,5);
?>
而Python簡(jiǎn)單得多:
s
=
"Hello World!"
print
s[:
5
]
兩段代碼都會(huì)輸出Hello。
其中的s[:5]使用了Python的“切片”特性,完整的寫(xiě)法應(yīng)該是s[0:5],但0可以省略,這里代表著輸出這個(gè)序列索引號(hào)從0開(kāi)始到5之前的內(nèi)容。
當(dāng)然列表也是可以使用切片的,如:
l
=
[
1
,
2
,
3
]
print
l[
1
:]
運(yùn)行后輸出[2,3]。
意味著從索引號(hào)1開(kāi)始,輸出到列表的最后。
知識(shí)點(diǎn)匯總
將前面所有的內(nèi)容加上一些新的知識(shí)點(diǎn),融合成一段代碼。認(rèn)真思考每一個(gè)輸出的結(jié)果是如何出來(lái)的,就能更好的理解這些。因?yàn)橹R(shí)點(diǎn)比較多,可以暫時(shí)不求甚解,但這些都是任何程序語(yǔ)言里面都會(huì)有的基礎(chǔ)內(nèi)容,最終是必須掌握的。
代碼中,#號(hào)意味著注釋的開(kāi)始,這些內(nèi)容不會(huì)被運(yùn)行。
另外代碼的第一行聲明了代碼編碼為utf-8。因?yàn)樽⑨屩谐霈F(xiàn)了非英文字符,所以就需要指定編碼,不然程序會(huì)報(bào)錯(cuò)。
# -*- coding:utf-8 -*-
str_1
=
'Hello'
str_2
=
'World!'
#以下語(yǔ)句都會(huì)輸出Hello World!
#print語(yǔ)句中的逗號(hào)意味著不換行,而是用空格間隔它們
print
str_1, str_2
#以下和上面一句是同樣的效果
print
str_1,
print
str_2
#同樣可以用字符串連接符
print
str_1
+
' '
+
str_2
#也可以用格式化操作符,它比前者更常用
#會(huì)將后面的變量依次替換到前面的%x上面
#%s指定替換為字符串,若替換整數(shù)則為%d,小數(shù)%f
print
'%s %s'
%
(str_1, str_2)
#會(huì)輸出00 11 22
for
i
in
range
(
3
):
print
'%d%d'
%
(i, i),
print
''
#輸出一個(gè)空的字符串用于換行
#會(huì)輸出11 22 33
for
i
in
range
(
1
,
4
):
print
'%d%d'
%
(i, i),
print
''
#會(huì)輸出00 22 44
for
i
in
range
(
0
,
5
,
2
):
print
'%d%d'
%
(i, i),
print
''
#會(huì)輸出0 1 0 1 0
i
=
0
while
i <
5
:
i
+
=
1
#等同于i = i + 1
if
i
%
2
=
=
0
:
#如果i除2的余數(shù)為0
print
1
,
else
:
print
0
,
print
''
#會(huì)輸出c
i
=
3
if
i
=
=
1
:
print
'a'
elif
i
=
=
2
:
print
'b'
elif
i
=
=
3
:
print
'c'
else
:
print
'error'
#會(huì)輸出1 2 3 3 4 4 5 5 6
for
i
in
range
(
10
):
i
+
=
1
print
i,
if
i <
3
:
continue
#如果i<3則中斷該次循環(huán),從循環(huán)體的頭部重新運(yùn)行
elif
i >
5
:
break
#如果i>5則中斷整個(gè)循環(huán)
print
i,
最后
雖然現(xiàn)在提及的是程序,但SEO要涉及的技術(shù)遠(yuǎn)不僅是程序。盡管很想從頭開(kāi)始提及所有應(yīng)該學(xué)習(xí)的方面,無(wú)奈這是幾本書(shū)都寫(xiě)不完的,單用幾篇文章更無(wú)法窮盡。
在接下來(lái)的文章里面,將跳空一些知識(shí)點(diǎn),如果讀者沒(méi)有相關(guān)基礎(chǔ),則需自行學(xué)習(xí)。之后將跳過(guò)的包括但不限于:
1. 基礎(chǔ)Web知識(shí),比如非ASCII字符集的URL需要編碼等常識(shí):
2. 瀏覽器開(kāi)發(fā)人員工具的運(yùn)用,可以選擇Chrome的開(kāi)發(fā)人員工具、或Firefox的Firebug插件等,個(gè)人推薦用Chrome。尤其需要先了解其抓包功能,在采集數(shù)據(jù)的時(shí)候經(jīng)常要用到。抓包功能在Chrome開(kāi)發(fā)人員工具里面,對(duì)應(yīng)的是”Network”選項(xiàng)卡。
3. 獨(dú)立配置Python的pycurl模塊。此處主要有兩種選擇,一種是在Windows系統(tǒng)安裝Curl、再安裝setuptools、最后安裝模塊,比較麻煩也不推薦,且以后其他模塊在Windows里面配置可能也是這么麻煩。另一種選擇即是配置一個(gè)Linux環(huán)境,在CentOS及Fedora等系統(tǒng)里面,執(zhí)行:sudo yum install python-pycurl,在Ubuntu等系統(tǒng)里面,執(zhí)行sudo apt-get install python-pycurl。之后將大量的使用到這個(gè)模塊,所以務(wù)必配置好。Linux的入門(mén)命令可見(jiàn):
4. 了解正則表達(dá)式。它是用來(lái)處理字符串的強(qiáng)大工具,可以在百度上尋找資料對(duì)它做初步的了解,至少要先知道.*?和[\s\S]*?這兩個(gè)的含義,它們?cè)诓杉瘮?shù)據(jù)的過(guò)程中是最常用的。這是一個(gè)很不錯(cuò)但難度較高的正則教程,可能不是很適合初學(xué):
此外最好買(mǎi)一本Python書(shū)籍,雖然因?yàn)镾EO沒(méi)必要對(duì)程序涉及很深入,大多程序類(lèi)書(shū)籍上的多數(shù)知識(shí)的重要性不高。比如每本書(shū)都會(huì)花大量篇幅去介紹面向?qū)ο缶幊痰乃悸放c實(shí)現(xiàn),但SEO的多數(shù)需求往往只有幾百行代碼,一般都不太會(huì)去涉及這些。不過(guò),一開(kāi)始的一些基礎(chǔ)知識(shí)學(xué)習(xí)的過(guò)程中,容易疏漏或者遺忘知識(shí)點(diǎn),有一本書(shū)會(huì)好得多。
尚未找到比較適合SEO看的Python書(shū)籍。我自己手邊有一本《Python核心編程》,應(yīng)該說(shuō)還可以吧。如果不確定買(mǎi)哪本的話,可以到這個(gè)論壇去找下pdf試看,它上面各類(lèi)計(jì)算機(jī)書(shū)籍應(yīng)該是相對(duì)最齊全的:
但不要只看pdf,一般學(xué)一門(mén)語(yǔ)言至少備一本紙質(zhì)書(shū)籍,它應(yīng)該是在自己不清楚或忘記了哪些知識(shí)點(diǎn)以后,可以隨時(shí)拿來(lái)翻看的工具書(shū)。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!