搜索引擎的核心技術(shù)架構(gòu),大體包括以下三塊,*,是蜘蛛/爬蟲技術(shù);第二,是索引技術(shù);第三是查詢展現(xiàn)的技術(shù); 當(dāng)然,我不是搜索引擎的架構(gòu)師,我只能用比較粗淺的方式來做一個結(jié)構(gòu)的切分。以下是小編為你整理的自學(xué)python編程入門教程 ?
先進(jìn)行幾個運(yùn)算: ?
5/2*3+9 ?
8*9-5/6 ?
這兩個算式,可以直接粘貼到python代碼編譯器里面,但是運(yùn)行之后,沒有輸出結(jié)果。 ?
其實(shí),python已經(jīng)運(yùn)算了這個式子了,只不過沒顯示結(jié)果。
?
用print可以顯示運(yùn)算結(jié)果。 ?
print(5/2*3+9)print(8*9-5/6) ?
如果我們想要看到一個完整的算式,需要把算式以字符串的形式返回。 ?
print("5/2*3+9"+str(5/2*3+9))print("8*9-5/6"+str(8*9-5/6)) ?
注意: ?
"5/2*3+9"就是一個字符串的形式,在英文輸入法的雙引號里面; ?
str(5/2*3+9)是對算式進(jìn)行計(jì)算,并把計(jì)算結(jié)果轉(zhuǎn)化為字符串; ?
+的作用是連接字符串。 ?
基本運(yùn)算 ?
加減乘除的運(yùn)算,和平常的一樣: ?
print("5+6="+str(5+6))print("5/6="+str(5/6))print("5*6="+str(5*6))print("5-6="+str(5-6)) ?
乘方運(yùn)算2^100,在python里面,寫為2**100: ?
print("2^100 = " + str(2**100))print("5^10 = " + str(5**10)) ?
求余數(shù),用%實(shí)現(xiàn): ?
print("100除以5的余數(shù)是" + str(*5))print("100除以90的余數(shù)是" + str(*90)) ?
注釋的運(yùn)用# 注釋:不參與程序運(yùn)行,作用是給給看代碼的人一些提示。 ?
# 我是一個大帥哥,這行是一行注釋,#號后面的表示注釋 ?
""" ?
多行注釋 ?
多行注釋 ?
多行注釋 ?
""" ?
# 一般情況下注釋都直接使用#號的形式 ?
# 在正常開發(fā)中,三個引號對的注釋形式一般是作為對整個文件的說明出現(xiàn)在文# 件的頂部 ?
# 針對某一行代碼的注釋,可以放在代碼語句的上面,也可以放在代碼的后面 ?
print(1801) # 系統(tǒng)提供的展示(打印,輸出)功能 ?
print(666) # ?
print() #默認(rèn)以換行結(jié)尾 ?
print(100-6) # 可以直接進(jìn)行數(shù)學(xué)運(yùn)算,打印結(jié)果就是運(yùn)算結(jié)果 ?
print(10086, 10+6) # 可以同時打印多個內(nèi)容,多個內(nèi)容之間用逗號隔開 ?
print(1801, 3+6, 4+7) # 打印結(jié)果里,多個內(nèi)容之間會默認(rèn)有一個空格
?
# 單引號對和雙引號對是等價的 ?
print('**************分割符******************') ?
print('good.123我愛*') # 引號引起來的叫字符串,單個字符也是字符串 ?
print('love',end=' ') # end=''設(shè)置打印結(jié)尾的內(nèi)容,默認(rèn)是換行(n) ?
print('****') ?
print('good morning', 666, '早上好', 4+6) # 字符串和數(shù)字可以混合打印 ?
print('3+6') # '3+6'這是一個字符串,包含3個字符:3+6 不是數(shù)學(xué)運(yùn)算 ?
# 有些特殊的字符需要使用轉(zhuǎn)義字符(),轉(zhuǎn)義字符本身也是特殊字符print('我n的'身高'是"18\0')print(r'我n的'身高'是"18\0') # 如果字符串以r開頭,那么這個字符串中所# 有的轉(zhuǎn)義字符全部失效。print('good' * 3) # 字符串可以和數(shù)字相乘,得到重復(fù)的字符串print('*'*10, '分割符', '*'*10)print('good' + 'morning', 666) # 字符串可以和字符串相加,得到一個拼接的字符串print('*'*20 + '分割符' + '*'*20) ?
請勿將代碼復(fù)制直接使用,可能出現(xiàn)中英文格式錯誤,請讀者手打練習(xí)。 ?
導(dǎo)入numpy模塊
在python IDE導(dǎo)入numpy模塊,我用的是自帶解釋器 ?
>>> import numpy as np ?
>>> np.array([1,2,3,4]) #通過array函數(shù)創(chuàng)建數(shù)組 ?
array([1, 2, 3, 4]) ?
>>> c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])#二維數(shù)組,第0軸長度為3,第1軸長度為4,也就分別相當(dāng)于矩陣的行數(shù)和列數(shù) ?
>>> c ?
array([[ 1, 2, 3, 4], ?
[ 4, 5, 6, 7], ?
[ 7, 8, 9, 10]]) ?
>>> c.shape#數(shù)組的形狀可以通過其shape 屬性獲得,它是一個描述數(shù)組各個軸長度的元組(tuple) ?
(3L, 4L) ?
3 ?
>>> np.arange(0,1,0.1)#arange()函數(shù)指定了開始值、終值和步長創(chuàng)建等差數(shù)列的一維數(shù)組,注意不包含終值。 ?
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) ?
4 ?
>>> np.linspace(0,1,10)#指定開始值、終值和元素個數(shù)創(chuàng)建等差數(shù)列的一維數(shù)組,通過endpoint參數(shù)指定是否包含終值,默認(rèn)為Ture,即包含終值 ?
array([ 0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444, ?
0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ])
>>> np.logspace(0,2,5)#logspace和linspace類似,區(qū)別在于它創(chuàng)建的是等比數(shù)列,起始值為10^0,而終值為10^2 ?
array([ 1. , 3.16227766, 10. , 31.6227766 , 100. ]) ?
蜘蛛,也叫爬蟲,是將互聯(lián)網(wǎng)的信息,抓取并存儲的一種技術(shù)實(shí)現(xiàn)
搜索引擎的信息收錄,很多不明所以的人會有很多誤解,以為是付費(fèi)收錄,或者有什么其他特殊的提交技巧,其實(shí)并不是,搜索引擎通過互聯(lián)網(wǎng)一些公開*的網(wǎng)站,抓取內(nèi)容,并分析其中的鏈接,然后有選擇的抓取鏈接里的內(nèi)容,然后再分析其中的鏈接,以此類推,通過有限的入口,基于彼此鏈接,形成強(qiáng)大的信息抓取能力。 ?
有些搜索引擎本身也有鏈接提交入口,但基本上,不是主要的收錄入口,不過作為創(chuàng)業(yè)者,建議了解一下相關(guān)信息,百度,google都有站長平臺和管理后臺,這里很多內(nèi)容是需要非常非常認(rèn)真的對待的。 ?
反過來說,在這樣的原理下,一個網(wǎng)站,只有被其他網(wǎng)站所鏈接,才有機(jī)會被搜索引擎抓取。如果這個網(wǎng)站沒有外部鏈接,或者外部鏈接在搜索引擎中被認(rèn)為是垃圾或無效鏈接,那么搜索引擎可能就不抓取他的頁面。 ?
分析和判斷搜索引擎是否抓取了你的頁面,或者什么時候抓取你的頁面,只能通過服務(wù)器上的訪問日志來查詢,如果是cdn就比較麻煩。 而基于網(wǎng)站嵌入代碼的方式,不論是cnzz,百度統(tǒng)計(jì),還是google analytics,都無法獲得蜘蛛抓取的信息,因?yàn)檫@些信息不會觸發(fā)這些代碼的執(zhí)行。
一個比較推薦的日志分析軟件是awstats。 ?
在十多年前,分析百度蜘蛛抓取軌跡和更新策略,是很多草根站長每日必做的功課,比如現(xiàn)在身價幾十億的*80后上市公司董事長,當(dāng)年在某站長論壇就是以此準(zhǔn)確的分析判斷而封神,很年輕的時候就已經(jīng)是站長圈的一代偶像。