• 整理完这篇代码,我哭了~原来我的钱是这样子消失的~~痛~太痛了~~


    ⭐️哔哔赖赖


    🌈这几天因为忙着整理笔记、应付~哦,不对👀……完成老师的作业以及……(不好意思,忙到忘记还有啥忙的了😭)

    在这里插入图片描述
    📍 以上种种原因,导致《小玩意儿》专栏没有及时更新出新的文章,在这里我想说一声……新年好 ……

    在这里插入图片描述
    👉上一篇写的文章:这些好看的皮肤,这不嗖的一下,统统都到电脑里了~
    感觉挺受大家的欢迎,这确实出乎我的意料😮,上一篇的文章从前天开始,展现量、阅读量、点赞量、收藏量突然噌噌噌的往上涨,那时感觉有些意外和惊喜。直到昨天早上,俺睁开迷蒙的双眼,打开手机,点开CSDN,想看一下技术大佬写的高质量文章来陶冶一下情操……
    在这里插入图片描述
    好吧,其实就想上一篇文章的数据怎么样(这种心情有点像抽奖时的心情😬),结果划着划着到了文章末尾,突然看到几个字儿:❗️ CSDN热榜❗️(可惜没有截图)直接给哥们“诈尸”了,从床上爬到床下,截图,发说说😂(请原谅一个没吃过蛋糕的孩子突然舔到了奶油后激动的心情)

    (以下是俺昨天情绪激动之下干的事的截图😅)在这里插入图片描述
    但是,更意外的事情发生了,上一篇文章也就“热”了几个小时就“凉”了,我还以为会“保温”呢……

    在这里插入图片描述
    👉 不过,没关系,这并不影响我更新文章,我写文章的目的一个是方便让我自己以后回顾复习,另一个是图点乐趣(对于这一专栏的文章来说)

    🚀 好了,咱们言归正传❗️

    🍅言归正传


    本次整理出来的是一个能让人潸然泪下的代码,它没有令人感动的功能,它呈现的是一张悲壮的数据表,震撼人心的数字,“泄流直下三千尺”的滚动条……

    💣它就是——获取某宝所有订单信息💥……的代码

    在这里插入图片描述
    你从什么时候开始用某宝?
    你知道你在某宝买了多少东西吗?
    你知道你从使用某宝到现在花了多少钱吗?
    不知道❓不知道就对了😋来到这你就知道了😜

    👇请往下看👇

    🍃实现过程

    🌴 Get_cookie.py

    Get_cookie.py是一个获取登录某宝后的cookie代码,先运行以下代码,然后在20秒内登录即可,20秒过后会生成一个taobao_cookie.txt文件,该文件为后续的自动登录做准备。

    from selenium import webdriver
    from time import sleep
    import json
    
    if __name__ == '__main__':
      driver = webdriver.Chrome()
      driver.maximize_window()
      driver.get('https://login.taobao.com/member/login.jhtml?')
      sleep(20)
    
      dictCookies = driver.get_cookies() # 获取list的cookies
      jsonCookies = json.dumps(dictCookies) # 转换成字符串保存
      with open('taobao_cookies.txt', 'w') as f:
        f.write(jsonCookies)
      print('cookies保存成功!')
    
    • 注意:在20秒内登录哦

    🌴 Taobao_Order.py

    Taobao_Order.py 是一个获取某包订单信息并将信息保存为excel文件的代码。

    模块使用说明:

    import json
    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import openpyxl
    from openpyxl.styles import Side, Font, Alignment, Border
    from decimal import Decimal
    
    
    class Taobao(object):
        def __init__(self):
            options = webdriver.ChromeOptions()
            options.add_argument('--headless')
            self.driver = webdriver.Chrome(options=options)
            self.driver.get('https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm?')
            self.driver.maximize_window()   # 放大窗口
    
            self.date =[]        # 存放日期
            self.order_good = []        # 存放订单号
            self.good_name = []        # 存放商品名
            self.num =[]        # 存放购买数量
            self.prices = []        # 存放商品价格
            self.stores = []        # 存放店铺名
    
        # 登录
        def login(self):
            # 获取保存下的cookie值
            with open('taobao_cookies.txt', 'r', encoding='utf8') as f:
                listCookies = json.loads(f.read())
    
            # 往browser里添加cookies
            for cookie in listCookies:
                cookie_dict = {
                    'domain': '.taobao.com',
                    'name': cookie.get('name'),
                    'value': cookie.get('value'),
                    "expires": '',
                    'path': '/',
                    'httpOnly': False,
                    'HostOnly': False,
                    'Secure': False
                }
                self.driver.add_cookie(cookie_dict)
    
            self.driver.refresh()
    
            # 等待快速登录按钮出现并点击
            WebDriverWait(self.driver, 1000).until(
                EC.presence_of_element_located((By.XPATH, '//div[@class="fm-btn"]/button'))
            )
            self.driver.find_element(By.XPATH, '//div[@class="fm-btn"]/button').click()
    
            print('登录成功!请等待获取信息……')
    
        # 解析数据
        def parse_data(self):
            # 点击交易状态元素出现并点击
            WebDriverWait(self.driver, 1000).until(
                EC.presence_of_element_located((By.XPATH, '//span[@class="rc-select-selection__rendered"]/span[text()="交易状态"]'))
            )
            self.driver.find_element(By.XPATH, '//span[@class="rc-select-selection__rendered"]/span[text()="交易状态"]').click()
    
            # 点击交易成功
            self.driver.find_element(By.XPATH, '//li[text()="交易成功"]').click()
            time.sleep(3)
    
            page = 0
            while True:
                try:
                    # 等待日期元素出现
                    WebDriverWait(self.driver, 1000).until(
                        EC.presence_of_element_located(
                            (By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[1]/tr/td[2]/span/a'))
                    )
                    time.sleep(2)   # 时间等待
                    # 获取日期
                    self.date += [i.text for i in self.driver.find_elements(By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[1]/tr/td[1]/label/span[2]')]
                    # 获取订单号 text
                    self.order_good += [i.text for i in self.driver.find_elements(By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[1]/tr/td[1]/span/span[3]')]
                    # 获取商品名 text
                    self.good_name += [i.text for i in self.driver.find_elements(By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[2]/tr[1]/td[1]/div/div[2]/p[1]/a[1]/span[2]')]
                    # 获取购买数量 text
                    self.num += [int(i.text) for i in self.driver.find_elements(By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[2]/tr[1]/td[3]/div/p')]
                    # 获取商品价格,保留两位小数
                    self.prices += [Decimal(str(round(float(i.text), 2))) for i in self.driver.find_elements(By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[2]/tr[1]/td[5]/div/div[1]/p/strong/span[2]')]
                    # 获取店铺名
                    self.stores += [i.text for i in self.driver.find_elements(By.XPATH, '//*[@id="tp-bought-root"]/div[*]/div/table/tbody[1]/tr/td[2]/span/a')]
    
                    page += 1
                    print(f'第{page}页订单信息获取成功')
    
                    # 判断下一页是否可以点击
                    next_page = self.driver.find_element(By.XPATH, '//button[text()="下一页"]')
                    if next_page.is_enabled(): # 如果可以点击,则点击
                        next_page.click()
                    else:   # 不可点击则退出循环
                        break
                except:
                    break
    
        # 将订单信息写入文件
        def save_file(self):
            f = openpyxl.Workbook()
            # 创建工作表
            sheet = f.create_sheet('淘宝订单')
            # 构建表头
            sheet.append(['日期', '订单号', '商品名', '购买数量', '商品价格', '店铺名'])
    
            # 设置字体的样式
            algn = Alignment(vertical='center', horizontal='center')
            side = Side(style='thin', color='000000')
            border = Border(right=side, left=side, top=side, bottom=side)
            font = Font(name='宋体', size=12)
    
            # 设置列宽
            sheet.column_dimensions['A'].width = 12
            sheet.column_dimensions['B'].width = 23
            sheet.column_dimensions['C'].width = 53
            sheet.column_dimensions['D'].width = 12
            sheet.column_dimensions['E'].width = 12
            sheet.column_dimensions['F'].width = 26
    
            # 获取的数据量
            num = len(self.date)
    
            for i in sheet[f'A1:F{num+5}']:
                for j in i:
                    j.alignment = algn
                    j.border = border
                    j.font = font
    
            # 将内容写入表格
            for i in range(num):
                sheet.cell(i+2, 1).value = self.date[i]
                sheet.cell(i+2, 2).value = self.order_good[i]
                sheet.cell(i+2, 3).value = self.good_name[i]
                sheet.cell(i+2, 4).value = self.num[i]
                sheet.cell(i+2, 5).value = self.prices[i]
                sheet.cell(i+2, 6).value = self.stores[i]
    
            sheet.cell(num+3, 1).value = f'总购买商品样数:{num}样;总购买数量:{sum(self.num)}件;总共花费:{sum(self.prices)}元'
            # 合并单元格
            sheet.merge_cells(f'A{num+3}:C{num+5}')
    
            # 保存表格
            f.save('某宝订单信息.xlsx')
            print('某宝订单信息.xlsx 文件保存成功!')
    
        def run(self):
            self.login()
            self.parse_data()
            self.save_file()
    
    taobao = Taobao()
    taobao.run()
    
    

    🌴实现效果

    • 运行界面中的效果图(为了展现效果😉,图片已加速,实际会比较慢)
      在这里插入图片描述
    • 保存的表格
      在这里插入图片描述
    • 表格的底部有统计好的数据(不看不知道,一看吓一跳❗️这是真的吗?我竟然这么有钱❗️ ❗️ ❗️ )
      在这里插入图片描述

    👏结束

    OK💪这就是今天整理出的代码😀

    喜欢的朋友可 点赞👍 收藏🌈 关注💖

    同时非常欢迎各位在评论区里打出你们总共在某宝花费的money💴
    展现你们强大的消费能力👀

    peace~

  • 相关阅读:
    网络层的IP协议
    QT的QML中属性无法使用
    Ubuntu部署K8S
    车辆调度算法
    管理Java依赖关系的最佳实践
    C语言力扣第32题之最长有效括号。用栈实现
    【uni-app】判断运行环境 & 配置
    C++ IO流
    树形表格default-expand-all不生效的问题
    AM62x的SPI总线怎么用?
  • 原文地址:https://blog.csdn.net/Oh_Python/article/details/127037603