Python抓取千牛后台订单数据(3个月前的订单毫无压力)

废话不多说,直接上代码。

# 千牛订单数据抓取
# pip install DrissionPage
# http://www.drissionpage.cn/

from DrissionPage import ChromiumPage, WebPage, SessionPage, SessionOptions, ChromiumOptions
import time
from commom.FileUtil import FileUtil

file_path = "D:\\qianniu_order_data.txt"
FileUtil.write_content(file_path, "")

login_url = 'https://loginmyseller.taobao.com/'
login_account = '账号。。。'
login_pwd = '密码。。。。'

page = WebPage()
page.get(login_url)

print("登录页面打开")
account_input = page.ele("#fm-login-id")
pwd_input = page.ele("#fm-login-password")
login_btn = page.ele(".fm-button fm-submit password-login")

account_input.input(login_account)
pwd_input.input(login_pwd)
login_btn.click()
page.wait.load_start()

print("登录成功")

page.get("https://myseller.taobao.com/home.htm/trade-platform/tp/sold")
page.wait.load_start()
page.listen.start("https://trade.taobao.com/trade/itemlist/asyncSold.htm?event_submit_do_query=1&_input_charset=utf8")
sgyq_ele = page.ele("@text()=3个月前")
sgyq_ele.click()
# page.wait.load_start()
res = page.listen.wait()  # 等待并获取一个数据包
if res.response.status == 200:
    print("返回的数据:", res.response.url)
    FileUtil.append_content(file_path, str(res.response.body) + "\n")

print("第一页数据获取完成。。。")

while True:
    next_btn_helper = page.ele("@text()=下一页")
    print("下一页按钮text:", next_btn_helper.text)
    disabled = next_btn_helper.parent().attr("disabled")
    print("disabled=", disabled)
    current_page_ele = page.ele(".next-btn next-medium next-btn-normal next-pagination-item next-current")
    print("当前页码 = ", current_page_ele.ele("tag:span").text)
    if disabled:
        break

    next_btn_helper.click()
    # page.wait.load_start()
    res = page.listen.wait()  # 等待并获取一个数据包
    if res.response.status == 200:
        print("返回的数据:", res.response.url)
        FileUtil.append_content(file_path, str(res.response.body) + "\n")
    time.sleep(2)

# page.ele("#nc_1_n1z")
# # 左键按住元素
# page.actions.hold('#nc_1_n1z')
# # 向右移动鼠标300像素
# page.actions.right(260)
# # 释放左键
# page.actions.release()


time.sleep(100)




FileUtil

class FileUtil:
    @staticmethod
    def write_content(file_path, content):
        """
        写入内容到文件,如果文件已存在则覆盖,如果文件不存在则创建。
        :param file_path: 文件路径
        :param content: 要写入的内容
        """
        try:
            with open(file_path, 'w', encoding='utf-8') as file:
                file.write(content)
            print(f"内容已成功写入到 {file_path}")
        except IOError as e:
            print(f"写入文件时发生错误: {e}")

    @staticmethod
    def append_content(file_path, content):
        """
        向文件末尾追加内容,如果文件不存在则创建。
        :param file_path: 文件路径
        :param content: 要追加的内容
        """
        try:
            with open(file_path, 'a', encoding='utf-8') as file:
                file.write(content)
            print(f"内容已成功追加到 {file_path}")
        except IOError as e:
            print(f"追加内容到文件时发生错误: {e}")

    @staticmethod
    def delete_file(file_path):
        """
        删除文件
        :param file_path: 文件路径
        """
        try:
            import os
            os.remove(file_path)
            print(f"文件 {file_path} 已成功删除")
        except FileNotFoundError:
            print(f"文件 {file_path} 不存在")
        except IOError as e:
            print(f"删除文件时发生错误: {e}")

    @staticmethod
    def read_lines(file_path):
        """
        读取TXT文件,将每行内容作为列表的一个元素返回。
        如果文件不存在或读取过程中发生错误,则返回空列表。
        :param file_path: 要读取的TXT文件的路径
        :return: 包含文件每行内容的列表
        """
        try:
            with open(file_path, 'r', encoding='utf-8') as file:
                lines = file.readlines()
                # 去除每行末尾的换行符(如果有的话)
                return [line.strip() for line in lines]
        except FileNotFoundError:
            print(f"文件 {file_path} 不存在")
            return []
        except IOError as e:
            print(f"读取文件 {file_path} 时发生错误: {e}")
            return []

目前这里是查询了3个月前的订单,可以修改此代码,再查询最近三个月的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
千牛是阿里巴巴旗下的一款电商管理软件,Python Selenium可以用来自动化操作千牛。 以下是Python Selenium操作千牛的一些例子: 1.打开千牛网页并登录 ```python from selenium import webdriver from selenium.webdriver.common.by import By # 打开Chrome浏览器 browser = webdriver.Chrome() # 打开千牛网页 browser.get('https://login.taobao.com/member/login.jhtml') # 输入账号密码并点击登录 username = browser.find_element(by=By.ID, value='fm-login-id') password = browser.find_element(by=By.ID, value='fm-login-password') username.send_keys('your_username') password.send_keys('your_password') login_button = browser.find_element(by=By.XPATH, value='//*[@id="login-form"]/div[5]/button') login_button.click() ``` 2.循环点击下一页直到最后一页 ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 点击下一页直到最后一页 while True: try: # 等待下一页按钮出现并点击 next_button = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="sell-manage-wrap"]/div[4]/div/div[5]/div[2]/div[2]/button[2]'))) next_button.click() except: # 如果没有下一页按钮则退出循环 break ``` 3.利用字典和dataframe存储数据并导出到Excel ```python import pandas as pd # 创建一个字典存储数据 data = {'商品名称': ['商品1', '商品2', '商品3'], '价格': [100, 200, 300], '销量': [50, 100, 150]} # 将字典转换为dataframe df = pd.DataFrame(data) # 导出到Excel df.to_excel('data.xlsx', index=False) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值