




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
多線程爬蟲Contents知識(shí)目標(biāo)掌握基本的多線程爬蟲技術(shù)技能目標(biāo)提高數(shù)據(jù)采集和處理能力素養(yǎng)目標(biāo)培養(yǎng)良好的信息素養(yǎng)和道德意識(shí)多線程爬蟲是一種利用多個(gè)線程同時(shí)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)抓取的技術(shù)。多線程網(wǎng)絡(luò)爬蟲傳統(tǒng)的單線程爬蟲爬取網(wǎng)頁的過程是按照順序逐個(gè)進(jìn)行的。先請(qǐng)求一個(gè)網(wǎng)頁再請(qǐng)求下一個(gè)網(wǎng)頁等待響應(yīng)返回多線程爬蟲同時(shí)處理多個(gè)網(wǎng)頁請(qǐng)求。多線程網(wǎng)絡(luò)爬蟲充分利用計(jì)算機(jī)的多核處理能力加快數(shù)據(jù)抓取速度將多線程技術(shù)運(yùn)用在采集網(wǎng)頁信息和解析網(wǎng)頁內(nèi)容上。多線程爬蟲多線程爬蟲流程如下:1.首先有一個(gè)網(wǎng)址列表,是要爬取數(shù)據(jù)的網(wǎng)頁列表。2.同時(shí)啟動(dòng)多個(gè)線程抓取網(wǎng)頁內(nèi)容,一般啟動(dòng)固定數(shù)量的線程。3.將抓取到的網(wǎng)頁源碼存儲(chǔ)在一個(gè)列表里。4.同時(shí)使用多個(gè)線程對(duì)網(wǎng)頁源碼表里的網(wǎng)頁內(nèi)容進(jìn)行解析。5.將解析之后的數(shù)據(jù)存儲(chǔ)起來。多線程爬蟲queue類是Python標(biāo)準(zhǔn)庫中的線程安全的隊(duì)列實(shí)現(xiàn),提供了一個(gè)適用于多線程編程的先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)—隊(duì)列。tailhead使用queue模塊實(shí)現(xiàn)多線程爬蟲queue模塊是Python內(nèi)置的標(biāo)準(zhǔn)模塊可以直接通過importqueue引用,在Queue模塊中提供了三種同步的、線程安全的隊(duì)列,分別是:Queue(先進(jìn)先出隊(duì)列)LifoQueue(后進(jìn)先出隊(duì)列)PriorityQueue(優(yōu)先級(jí)隊(duì)列)LifoQueue和PriorityQueue都是Queue的子類。這些隊(duì)列的唯一區(qū)別是元素取出的順序不同。使用queue模塊實(shí)現(xiàn)多線程爬蟲表示一個(gè)基本的FIFO(FirstInFirstOut)隊(duì)列,即先進(jìn)先出。queue.Queue(maxsize=0)是個(gè)整數(shù),規(guī)定了隊(duì)列的長(zhǎng)度maxsize一旦達(dá)到上限,再添加數(shù)據(jù)會(huì)導(dǎo)致阻塞,直到隊(duì)列中的數(shù)據(jù)被消費(fèi)掉。Queue類如果maxsize小于或者等于0隊(duì)列大小沒有限制maxsize的默認(rèn)值為0。使用Queue的示例示例:fromqueueimportQueuequeue_obj=Queue()foriinrange(4):queue_obj.put(i)whilenotqueue_obj.empty():print(queue_obj.get())運(yùn)行結(jié)果:0123LifoQueue類后進(jìn)先出隊(duì)列(LastinFirstOut)queue.LifoQueue(maxsize=0)maxsize參數(shù)的含義與Queue類相同。使用LifoQueue的示例示例:fromqueueimportLifoQueuelifo_queue=LifoQueue()foriinrange(4):lifo_queue.put(i)whilenotlifo_queue.empty():print(lifo_queue.get())運(yùn)行結(jié)果:
3210使用queue模塊實(shí)現(xiàn)多線程爬蟲表示優(yōu)先級(jí)隊(duì)列,按級(jí)別順序取出元素,優(yōu)先級(jí)隊(duì)列中的元素一般采取元組(優(yōu)先級(jí)別,數(shù)據(jù))的形式來存儲(chǔ)。queue.PriorityQueue(maxsize=0)其中,maxsize參數(shù)的含義與前兩個(gè)類相同。PriorityQueue類使用PriorityQueue的示例示例:fromqueueimportPriorityQueueclassJob(object):def__init__(self,level,description):self.level=levelself.description=descriptionreturndef__lt__(self,other):returnself.level<other.levelpriority_queue=PriorityQueue()priority_queue.put(Job(5,'中'))priority_queue.put(Job(10,'低'))priority_queue.put(Job(1,'急'))whilenotpriority_queue.empty():next_job=priority_queue.get()print('開始工作:',next_job.description)運(yùn)行結(jié)果:開始工作:急開始工作:中開始工作:低Queue模塊Queue(先進(jìn)先出隊(duì)列)LifoQueue(后進(jìn)先出隊(duì)列)PriorityQueue(優(yōu)先級(jí)隊(duì)列)Queue模塊定義了2個(gè)異常類:Empty當(dāng)從空隊(duì)列中取數(shù)據(jù)時(shí),可拋出此異常。Full當(dāng)向一個(gè)滿隊(duì)列中存數(shù)據(jù)時(shí),可拋出此異常。Queue模塊Queue類提供了數(shù)據(jù)存儲(chǔ)和管理的常用方法方法說明empty()如果隊(duì)列為空,返回True,否則返回False。full()如果隊(duì)列已滿則返回True,否則返回False。get()從隊(duì)頭獲取并刪除第一個(gè)元素。put()在隊(duì)尾添加一個(gè)元素。get_nowait()立即取出一個(gè)元素,不等待,相當(dāng)于get(False)。put_nowait()立即放入一個(gè)元素,不等待,相當(dāng)于put(item,False)。join()阻塞當(dāng)前線程,直到隊(duì)列里的所有元素都已被處理。本講小結(jié)分析了多線程爬蟲的整個(gè)流程1結(jié)合實(shí)際示例介紹了Python中實(shí)現(xiàn)多線程的queue模塊的基本使用2課后作業(yè)使用單線程、多線程、技術(shù)獲取段子網(wǎng):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科學(xué)技術(shù)職業(yè)學(xué)院《數(shù)據(jù)新聞理論與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東酒店管理職業(yè)技術(shù)學(xué)院《英語三》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東金融學(xué)院《金融建模與量化分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東金融學(xué)院《中文信息處理技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東環(huán)境保護(hù)工程職業(yè)學(xué)院《西方舞蹈史》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東東軟學(xué)院《酒店客戶管理實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東創(chuàng)新科技職業(yè)學(xué)院《故事醫(yī)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《建筑材料管理》課件
- 小學(xué)生課件插花圖片
- 贛南醫(yī)學(xué)院《即興彈唱》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)生法制安全教育演講稿6篇
- DL 5190.8-2019 電力建設(shè)施工技術(shù)規(guī)范 第8部分:加工配制
- 開放是當(dāng)代中國(guó)的鮮明標(biāo)識(shí) 教學(xué)設(shè)計(jì)-高中政治統(tǒng)編版選擇性必修一
- 畢業(yè)設(shè)計(jì)(論文)-基于AT89C51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 二手新能源汽車充電安全承諾書
- 幼兒園繪本故事:《想暖和的雪人》 課件
- 住院醫(yī)師規(guī)培出科考核評(píng)估表格
- 化纖織造行業(yè)-生產(chǎn)工藝流程簡(jiǎn)介課件
- 棚戶區(qū)改造項(xiàng)目房屋拆除工程施工組織設(shè)計(jì)方案
- 流行病學(xué)知識(shí)考核試題題庫與答案
- DB11-T212-2017園林綠化工程施工及驗(yàn)收規(guī)范
評(píng)論
0/150
提交評(píng)論