• Python爬取新版CRMEB小程序商城后台订单数据,保存为excel


    安装依赖库

    pip3 install requests, openpyxl
    

      

    爬取思路

    1. 后台ingdan的接口地址是:/admin/order.StoreOrder/order_list.html
    2. 登陆之后我们可以获取到header信息,利用requests.get方式获取接口数据,并将爬取的response数据返回为json数据,利用字典的get方式获取我们需要的信息。
    3. 将我们需要的订单、支付时间等信息逐项读取并返回为一个列表格式
    4. 创建一个空白的excel文档
    5. excel第一行设置为每一列的标题
    6. 每个标题对应的列存入对应的数据
     
    import json
    import re
    import requests
    from openpyxl import Workbook
    
    def load_json():
        """ 读取json中的data信息 """
        resp = requests.get(
                'http://xxx.com/admin/order.StoreOrder/order_list.html?',
                params=params,
                headers=headers
            ).content.decode('utf-8')
        datas = json.loads(resp).get('data', '不存在')
        return datas
    
    def read_data(dict_name):
        """ 
        dict_name对应的每个值,读取订单信息
            order_id - 订单ID | pay_price - 实际支付 | pay_type_name - 支付类型 | pink_name - 订单类型
            mark - 用户备注(邮箱)| total_num - 订单数量 | add_time - 支付时间 | _info - 商品名称(返回一个列表)
        """
        datas = load_json()
        return [data[dict_name] for data in datas]    
    
    def cell_range(wb):
        """ 创建一个空白表格 """
        ws = wb.active
        return ws
    
    def save_xlsx(ws, title, sheets, column, start=2):
        """ 设置首行标题及标题对应的值 """
        ws[column+str(start-1)] = title
        for i in list(range(start, len(sheets)+start)):
            ws[column+str(i)].value = sheets[i-start]
    

      

    函数使用文档

    • load_json()爬取接口数据并返回data的json格式数据
    • read_data()获取每个数据的列表
    • cell_range()获取excel的默认表格,并返回
    • save_xlsx(ws, title, sheets, column, start=2)
      • ws: 空白的表格
      • title: 设置第一行对应数据的标题
      • sheets: 每个数据的列表
      • column: 每一列对应的大写字母如(A,B,C,D,E)

    开始爬取并保存,需要获取更多数据,请参考CRMEB的接口文档

     
    if __name__ == "__main__":
    
        from openpyxl import Workbook
    
        # headers信息请在头部header中获取
        headers = {
            'Cookie': '替换为你的Cookie信息',
            'Host': '替换为你的host',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4128.3 Safari/537.36'
        }
    
        # page为分页页码    limit为每一页的订单数量,其他筛选条件在这里添加,具体参考crmeb接口文档 
        params = {'page': 1, 'limit': 20}   
    
        wb = Workbook()
        ws = cell_range(wb)
    
        # 设置订单号
        order_id = read_data('order_id')
        save_xlsx(ws, title='订单号', sheets=order_id, column='A')
    
        # 设置订单数量
        total_num = read_data('total_num')
        save_xlsx(ws, title='订单数量', sheets=total_num, column='B')
    
        # 设置支付时间
        add_time = read_data('add_time')
        save_xlsx(ws, title='支付时间', sheets=add_time, column='C')
    
        # 设置实际支付
        pay_price = read_data('pay_price')
        save_xlsx(ws, title='实际支付', sheets=pay_price, column='D')
    
        # 设置支付类型
        pay_type_name = read_data('pay_type_name')
        save_xlsx(ws, title='支付类型', sheets=pay_type_name, column='E')
    
        # 设置推广人
        spread_nickname = read_data('spread_nickname')
        save_xlsx(ws, title='推广人', sheets=spread_nickname, column='F')
    
        # 设置产品名称
        names = [name[0]['cart_info']['productInfo']['store_name'] for name in read_data('_info')]
        save_xlsx(ws, title='产品名称', sheets=names, column='G')
    
        wb.save('data_crmeb.xlsx')
    

      

    本条爬虫比较简陋,但对于我们自己的后台足够用了,只为方便大家获取订单数据,方便分析,请勿用于其他用途哟。

  • 相关阅读:
    SystemV和BSD的区别
    Linux init 系列一 System V风格
    ps -ef和ps aux的区别
    Linux中/etc/resolv.conf文件简析
    Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stoc
    在Linux中利用Service命令添加系统服务及开机自启动
    实例具体解释Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(二)
    关于程序性能优化基础的一些个人总结
    C++开发人脸性别识别总结
    double型转换成string型
  • 原文地址:https://www.cnblogs.com/xingfuggz/p/13026284.html
Copyright © 2020-2023  润新知