1. 程式人生 > 其它 >多執行緒池——爬取新發地300頁菜價

多執行緒池——爬取新發地300頁菜價

#執行緒池一次性開闢一些執行緒,使用者給執行緒提交任務,執行緒任務的呼叫交給執行緒池來完成
#
# from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor  #執行緒池和程序池
#
# def fn(name):
#     for i in range(1000):
#         print(name,i)
#
# if __name__ == '__main__':
#     #建立執行緒池
#     with ThreadPoolExecutor(50) as t:
#         for i in range(100):
# t.submit(fn,name=f"執行緒{i}") # #等待執行緒名完畢,才繼續執行 # print("over") #思路 #1,如何提取單個頁面的資料 #2.上執行緒池,多個頁面同時抓取 import csv import requests from concurrent.futures import ThreadPoolExecutor f=open("菜價.csv",mode="w",encoding="utf-8",newline='') csvwriter=csv.writer(f) def down_one_page(url): resp
=requests.get(url) for i in range(20): list=[] prodName=resp.json()["list"][i]['prodName'] avgPrice=resp.json()["list"][i]['avgPrice'] place=resp.json()["list"][i]['place'] list.append(prodName) list.append(avgPrice) list.append(place)
print(list) csvwriter.writerow(list) if __name__ == '__main__': #執行緒池 down_one_page("http://www.xinfadi.com.cn/getPriceData.html?current=1") with ThreadPoolExecutor(50) as t: for i in range(200): #爬取200頁資料 t.submit(down_one_page,f"http://www.xinfadi.com.cn/getPriceData.html?current={i}") print("下載完畢")

多執行緒爬取新發地300頁菜價,速度得到很大的提升