python线程池 批量抓取蔬菜价格 并写入csv文件

# 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")

 

 结果:

 表格打开:

 

posted @ 2022-04-11 13:54  波罗斯の程序日记  阅读(74)  评论(0编辑  收藏  举报