資料提取方法 多程序多執行緒爬蟲

2021-10-25 09:42:13 字數 1472 閱讀 8290

爬取

頁面的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下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...