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

⭐️哔哔赖赖


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

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

在这里插入图片描述
👉上一篇写的文章:这些好看的皮肤,这不嗖的一下,统统都到电脑里了~
感觉挺受大家的欢迎,这确实出乎我的意料😮,上一篇的文章从前天开始,展现量、阅读量、点赞量、收藏量突然噌噌噌的往上涨,那时感觉有些意外和惊喜。直到昨天早上,俺睁开迷蒙的双眼,打开手机,点开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~

  • 24
    点赞
  • 40
    收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 13

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值