天天看點

2023爬蟲學習筆記 -- 多線程操作

一、定義一個程式開始時間

程式開始時間=time.time()
           

二、建立幾個網址,模拟目标網站

網址清單=['http://www.baidu.com','http://www.sogou.com','http://www.163.com']
           

三、建立一個函數通路網站,模拟爬取資料操作(耗時操作)

頭={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
def 通路網站(url):
    網站内容=requests.get(url=url,headers=頭).text
    time.sleep(2)
    print(網站内容[1:20])
           

四、調用函數,并擷取時長,每次程式運作時間在6-7秒之間

for 網址 in 網址清單:
    通路網站(網址)
print("總耗時長:",time.time()-程式開始時間)
           

五、總耗時長

2023爬蟲學習筆記 -- 多線程操作

六、換成多線程操作

1、前三步和上面一樣

程式開始時間=time.time()
網址清單=['http://www.baidu.com','http://www.sogou.com','http://www.163.com']
頭={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
def 通路網站(url):
    網站内容=requests.get(url=url,headers=頭).text
    time.sleep(2)
    print(網站内容[1:20])
           

2、建立一個線程,并将所有子線程放進去

線程池=[]
for 網址 in 網址清單:
    線程=Thread(target=通路網站,args=(網址,))
    線程池.append(線程)
    線程.start()
           

3、讓子線程執行完畢,主程式再結束,并擷取程式運作時間

for t in 線程池:
    t.join()
print("總耗時長:",time.time()-程式開始時間)
           

4、總耗時長在2-3秒之間,是上面的三倍

2023爬蟲學習筆記 -- 多線程操作

繼續閱讀