爬取
頁面的url是:
思路分析:
確定url位址
url位址的規律非常明顯,一共只有13頁url位址
確定資料的位置
資料都在id='content-left』的div下的div中,在這個區域,url位址對應的響應和elements相同
上述**改寫成多執行緒方式實現
2.1 回顧多執行緒的方法使用
在python3中,主線程主程序結束,子執行緒,子程序不會結束
為了能夠讓主線程**子執行緒,可以把子執行緒設定為守護執行緒,即該執行緒不重要,主線程結束,子執行緒結束
t1 = threading.thread(targe=func,args=(,
))t1.setdaemon(
true
)t1.start(
)#此時執行緒才會啟動
2.2 回顧佇列模組的使用
from queue import queue
q = queue(maxsize=
100)
item =
q.put_nowait(item)
#不等待直接放,佇列滿的時候會報錯
q.put(item)
#放入資料,佇列滿的時候回等待
q.get_nowait(
)#不等待直接取,佇列空的時候會報錯
q.get(
)#取出資料,隊列為空的時候會等待
q.qsize(
)#獲取佇列中現存資料的個數
q.join(
)#佇列中維持了乙個計數,計數不為0時候讓主線程阻塞等待,佇列計數為0的時候才會繼續往後執行
q.task_done(
)# put的時候計數+1,get不會-1,get需要和task_done 一起使用才會-1
2.3 多執行緒實現思路剖析
把爬蟲中的每個步驟封裝成函式,分別用執行緒去執行
不同的函式通過佇列相互通訊,函式間解耦
將上述**改寫成多程序方式實現
3.1 回顧多程序程的方法使用
from multiprocessing import process
t1 = process(targe=func,args=(,
))t1.daemon =
true
#設定為守護程序
t1.start(
)#此時執行緒才會啟動
重點
能夠通過多執行緒多程序實現爬蟲
掌握queue中put和get以及task_done和join方法的使用
python 爬蟲 多執行緒 多程序
乙個程式至少有乙個程序,乙個程序至少有乙個執行緒.資源 程序擁有獨立資源,執行緒依賴於程序,沒有獨立資源,所有該程序的執行緒共享所在程序的所有資源。劃分尺度 執行緒的劃分尺度小於程序 資源比程序少 使得多執行緒程式併發性更高。執行緒 執行緒的執行開銷小,但不利於資源的管理和儲存。程序 多個程序之間相...
Python爬蟲 非同步爬蟲(多程序和多執行緒)
非同步爬蟲 在爬蟲中使用非同步實現高效能的資料爬取操作 執行緒是程式執行的最小單位,乙個程序可以有多個執行緒。非同步爬蟲的方式 多程序,多執行緒 不建議 好處 可以為相關阻塞的操作單獨開啟程序或者執行緒,阻塞操作就可以非同步執行 繼續執行阻塞的操作之後的 弊端 無法無限制地開啟多程序或者多執行緒 程...
多執行緒 多程序?
這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...