python執行緒池 批量抓取蔬菜價格 並寫入csv檔案
阿新 • • 發佈:2022-04-11
# http://www.xinfadi.com.cn/index.html
# 介面 http://www.xinfadi.com.cn/getPriceData.html
# 想提取單個頁面的資料
# 上執行緒池,多頁面同時抓取
import requests from concurrent.futures import ThreadPoolExecutor import csv import time
def get_one_page(current): data = {"limit":20,"current":current} r = requests.post("http://www.xinfadi.com.cn/getPriceData.html",data=data) list = r.json()["list"] write_csv(list)
def write_csv(list): # 寫資料 with open("蔬菜價格.csv","a",encoding="utf-8",newline="") as f: w = csv.writer(f) for v in list: w.writerow((v["prodName"],v["lowPrice"],v["avgPrice"],v["highPrice"],v["place"],v["unitInfo"],v["pubDate"])) print(v["prodName"],v["lowPrice"],v["avgPrice"],v["highPrice"],v["place"],v["unitInfo"],v["pubDate"]) time.sleep(1)
if __name__ == "__main__": # 寫表頭 with open("蔬菜價格.csv","a",encoding="utf-8",newline="") as f: w = csv.writer(f) w.writerow(("品名","最低價","平均價","最高價","產地","單位","釋出時間"))
# 建立執行緒池 with ThreadPoolExecutor(20) as t: for i in range(100): # 投遞100個任務 t.submit(get_one_page,current=i)
print("OK")
import requests from concurrent.futures import ThreadPoolExecutor import csv import time
def get_one_page(current): data = {"limit":20,"current":current} r = requests.post("http://www.xinfadi.com.cn/getPriceData.html",data=data) list = r.json()["list"] write_csv(list)
def write_csv(list): # 寫資料 with open("蔬菜價格.csv","a",encoding="utf-8",newline="") as f: w = csv.writer(f) for v in list: w.writerow((v["prodName"],v["lowPrice"],v["avgPrice"],v["highPrice"],v["place"],v["unitInfo"],v["pubDate"])) print(v["prodName"],v["lowPrice"],v["avgPrice"],v["highPrice"],v["place"],v["unitInfo"],v["pubDate"]) time.sleep(1)
if __name__ == "__main__": # 寫表頭 with open("蔬菜價格.csv","a",encoding="utf-8",newline="") as f: w = csv.writer(f) w.writerow(("品名","最低價","平均價","最高價","產地","單位","釋出時間"))
# 建立執行緒池 with ThreadPoolExecutor(20) as t: for i in range(100): # 投遞100個任務 t.submit(get_one_page,current=i)
print("OK")
結果:
表格開啟: