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

posted @ 2019-10-28 11:27  齐建伟  阅读(1020)  评论(0编辑  收藏  举报