廢話不多說酥泛,亮代碼今豆。
python執(zhí)行
1 import re
2 import urllib
3 import time
4
5 start = time.clock()
6 for i in range(1,100000):
7 z = i+1
8 print z
9 end = time.clock()
10
11 print (end-start)
耗時(shí):0.011912s
PHP執(zhí)行
1 <?php
2 $z = 0;
3 $t1 = microtime(true);
4 for ($i=0; $i < 100000; $i++) {
5 $z = $z+1;
6 }
7 $t2 = microtime(true);
8 echo $t2-$t1;
9 ?>
耗時(shí):0.002054s
結(jié)論:PHP效率完勝Python嫌拣。
且慢,這就完了么呆躲,不然异逐。python機(jī)制和PHP不同,處理數(shù)字時(shí)會(huì)對(duì)-5-100的數(shù)字進(jìn)行cache插掂,建立所有數(shù)字對(duì)象灰瞻,所以會(huì)慢,這個(gè)代碼顯然對(duì)python不公平辅甥。換成正則代碼酝润,正則是爬蟲最常用的,這個(gè)正式python的強(qiáng)項(xiàng)肆氓,同樣的算法袍祖,看一下效果如何底瓣。簡(jiǎn)單起見谢揪,用變量$html或html表示已經(jīng)獲取到的html代碼(http://tieba.baidu.com/p/2460150866)。
Python
15 start = time.clock()
16 reg = r'src="(.+?\.jpg)" pic_ext'
17 imgre = re.compile(reg)
18 imglist = re.findall(imgre,html)
19 end = time.clock()
20 print (end-start)
執(zhí)行耗時(shí)0.004s
PHP
48 $t1 = microtime(true);
49 preg_match_all("/src=\"(.*?).jpg\"/i", $html ,$title);
50 $t2 = microtime(true);
執(zhí)行耗時(shí)0.002s
效率可見捐凭。但只這樣來下結(jié)論未免草率拨扶,可能還有很多算法中python的處理要優(yōu)于PHP,但我們普通的需求茁肠,還不足以去比拼由各語(yǔ)言特性所受影響的深層算法患民。
所以開始寫爬蟲還是用PHP進(jìn)行來的比較快,免去了python的學(xué)習(xí)成本垦梆,效率并不比python差匹颤。