
800819103
在線客服,實時響應
qq群
在線客服,實時響應
客服電話
13318873961
大數據時代,爬蟲需要采集的數據越來越多,小爬蟲是無法滿足采集工作的,而且效率也非常慢,通常爬蟲可以使用多線程加快采集工作,提高工作的效率,那么如何實現多線程分步爬取呢?
另外,采用多線程,也需要注意控制采集的速度,避免給對方帶去毀滅性的傷害。
Python里控制多線程只需要用到模板threading,而且只需要用到其中的Thread。
簡單的使用方法如下:
Thread使用方法為:
threading.Thread(target=線程運行的函數,args=(參數)) 其中參數用逗號分隔,并以逗號結尾。
隨后使用start啟動。
運行結果如下:
可以看到五個線程同步運行,因sleep設置的時間相同,所以也同步結束。
但有一個缺點是第16行代碼在五個線程啟動后隨即也就運行了,相當于此時主線程已經結束了而那五個子線程還在運行。
控制策略有兩個
修改代碼如下:
1 for i in range(1,thread+1):
2 t = threading.Thread(target=spider,args=(i,))
3 t.setDaemon(True)
4 t.start()
運行結果如下:
子線程在主線程結束的時候也同步結束,未運行的部分也就不再運行了。
修改代碼如下:
1 for i in range(1,thread+1):
2 t = threading.Thread(target=spider,args=(i,))
3 t.start()
4 t.join()
從運行結果可以看到主線程停留在t.join()的位置,一直等到五個子線程全部結束后才開始繼續向后運行。
以上就是需要用到的threading模板里所有的東西了。
在整理好需要處理的數據列表后,我們只需要將列表分段分別交給不同的線程來處理,主線程等待所有數據處理完畢之后再進行下一步操作,如下:
運行結果如下:
五個線程分步處理各自被分配到的數據,總體運行時間大幅縮減。當然機器給力的話,可以增加線程數,得到更快的速度。