zoukankan      html  css  js  c++  java
  • use selenium+chromedriver to taobao automatically

    原理

    利用chromedriver来驱动chrome进行各种模拟各种行为操作, 然后利用selenium提供的接口来操作chromedriver.

    安装ChromeDriver

    当然这个的默认前提是你已经安装了Chrome.

    下载

    下载地址: http://chromedriver.chromium.org/ , 如果国内有被墙的情况请自行解决, 其次最重要的一点是版本, 一定要下载与自己浏览器想对应的版本.

    安装

    下载下来的直接就是一个驱动, 其实不存在安装的问题, 只需要解压出来就行, 但是需要添加环境变量. 所以我选在将其拷贝放入已经在环境变量的目录中: /usr/local/bin/.
    网上说需要给他执行权限(实际我没有做一步操作):

    sudo chmod u+x,o+x   /usr/local/bin/chromedriver
    

    编程

    原理很简单, 就是把购物的几步操作用代码来实现, 依次是登陆、购物车选中、购买.

    from selenium import webdriver
    import datetime
    import time
    
    
    # 登陆淘宝
    def login():
        browser.get("https://www.taobao.com")
        time.sleep(3)
        if browser.find_element_by_link_text("亲,请登录"):
            browser.find_element_by_link_text("亲,请登录").click()
            print(f"请尽快扫码登录")
            time.sleep(10)
    
    
    # 勾选购物车
    def picking(method):
        browser.get("https://cart.taobao.com/cart.htm")
        time.sleep(3)
    
        if method == 0:
            while True:
                try:
                    if browser.find_element_by_id("J_SelectAll1"):
                        browser.find_element_by_id("J_SelectAll1").click()
                        break
                except:
                    print(f"找不到购买按钮")
        else:
            print(f"请手动勾选需要购买的商品")
            time.sleep(5)
    
    
    def buy(times):
        while True:
            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            # 对比时间,时间到的话就点击结算
            if now > times:
                # 点击结算按钮
                while True:
                    try:
                        if browser.find_element_by_link_text("结 算"):
                            browser.find_element_by_link_text("结 算").click()
                            print(f"结算成功,准备提交订单")
                            break
                    except:
                        pass
                # 点击提交订单按钮
                while True:
                    try:
                        if browser.find_element_by_link_text('提交订单'):
                            browser.find_element_by_link_text('提交订单').click()
                            print(f"抢购成功,请尽快付款")
                    except:
                        print(f"再次尝试提交订单")
                time.sleep(0.01)
    
    
    if __name__ == "__main__":
        # 请指定勾选购物车商品的方式
        # 0代表,自动勾选购物车内的全部商品。注意:若购物车中存在失效商品时无法进行全选,请勿使用此项
        # 1代表,手动勾选购物车内的商品
        method = 1
    
        # 请指定抢购时间,时间格式:"2019-06-01 10:08:00.000"
        times = "2019-06-04 08:35:00.000"
    
        # 自动打开Chrome浏览器
        browser = webdriver.Chrome()
        # 设置浏览器最大化显示
        browser.maximize_window()
    
        # 扫码登录淘宝
        login()
        # 勾选准备结算的商品
        picking(method)
        # 等待抢购时间,定时秒杀
        buy(times)
    

    代码我已经开源在我的Gitee: https://gitee.com/jerryqi/python-practice

  • 相关阅读:
    快速排序(java实现)
    java8 stream一些知识
    Lombok安装、简单使用、入门
    explain mysql 结果分析
    MySQL调优三部曲(二)EXPLAIN
    MySQL调优三部曲(一)慢查询
    排查问题
    Dynamics 365 获取值 设置值
    MySql CP 表 和 数据
    Dynamics 365单项选项集&多项选项集
  • 原文地址:https://www.cnblogs.com/jerryqi/p/11751201.html
Copyright © 2011-2022 走看看