白又白X 2022-04-10 16:05 采纳率: 14.3%
浏览 105
已结题

采集指定网站菜价、如何能以excel表格下载下来 。

采集采集只要当天的价格,比如最新发布的时间,每天都要更新需求,做个文件出来自动下载。
采集网址http://www.xinfadi.com.cn/priceDetail.html

  • 写回答

5条回答 默认 最新

  • 鸡蛋酱$ 2022-04-10 19:54
    关注
    获得0.85元问题酬金
    
    import requests
    import openpyxl
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
    }
    
    
    def write_data(json: dict, file_name: str):
        """
        创建一个file_name.xlsx来存储json
        :param json:
        :param file_name:
        :return:
        """
        data_array = json['list']
        label_array = ["品名", "最低价", "平均价", "最高价", "规格", "产地", "单位", "发布日期"]
        book = openpyxl.Workbook()
        sheet = book.active
        sheet.append(label_array)
        for i in data_array:
            prodName = i['prodName']
            lowPrice = i["lowPrice"]
            avgPrice = i["avgPrice"]
            highPrice = i["highPrice"]
            specInfo = i["specInfo"]
            place = i["place"]
            unitInfo = i["unitInfo"]
            pubDate = i["pubDate"]
            array = [prodName, lowPrice, avgPrice, highPrice, specInfo, place, unitInfo, pubDate]
            sheet.append(array)
        book.save(f"{file_name}.xlsx")
        print(f"{file_name}.xlsx 下载完成!")
    
    
    class Spider:
        def __init__(self):
            self.url = "http://www.xinfadi.com.cn/getCat.html"
            self.json = {"蔬菜": 1186, "水果": 1187, "肉禽蛋": 1189, "水产": 1190, "粮油": 1188, "豆制品": 1203, "调料": 1204}
            self.session = requests.session()
    
        def get_data(self, num_id: int):
            """
            获取选择的数据
            :param num_id:
            :return:
            """
            data = {
                "prodCatid": num_id
            }
            req = self.session.post(url=self.url, data=data, headers=headers)
            json = req.json()
            req.close()
            return json
    
        def download(self):
            keys = list(self.json.keys())
            for i in range(len(keys)):
                print(i, keys[i])
            num = input("输入下标:")
            the_id = self.json[keys[eval(num)]]
            the_json = self.get_data(the_id)
            write_data(json=the_json, file_name=keys[eval(num)])
    
    
    if __name__ == '__main__':
        User = Spider()
        User.download()
    
    

    img

    img

    img

    运行程序,会在当前目录生成一个.xlsx文件,就是你需要的数据文件
    需要你安装一下openpyxl 和 requests
    有用的话点一下采纳

    评论

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 修改了问题 4月10日
  • 创建了问题 4月10日

悬赏问题

  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥20 和学习数据的传参方式,选择正确的传参方式有关
  • ¥15 这是网络安全里面的poem code
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路