双十一过去,突发奇想是不是可以用python实现自动化清空购物车,顺便学习.记录在此,python小白,还请大神知道.
工具:pyCharm,Python3.6,selenium3.141,火狐浏览器,geckodriver.开发环境:mac-Pro
基本开发工具不做过多介绍,直接开说不知道的.
selenium:
*selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
geckodriver
*下载地址:https://github.com/mozilla/geckodriver
*用于驱动火狐浏览器
*至于为什么选用火狐而不是程序员利器chrome,主要原因大家应该也能猜到,chrome的驱动chromedriver是真的不好下载.花钱买的蓝灯最近也不好用,所以此处就用了火狐.道理都是一样的.
*如何试用geckodriver:找到火狐路径/Applications/Firefox.app/Contents/MacOS/firefox,将下载好的geckodriver放到文件夹下->完工.
使用步骤:
*扫码登录
*购物车选中物品
*设置好时间,等待时间到后自动结算、提交订单
直接上代码.
from selenium import webdriver
import datetime
# 扫码登录,设置结算时间
def begin():
print("请扫码登录")
currentUrl = driver.current_url
while ((url in currentUrl) == False):
currentUrl = driver.current_url
pass
print("登录成功,选择要购买的物品")
time = input("请输入时间,格式为:2019-08-08 15:01:00: \n")
while (1):
try:
print(time,type(time))
time_date = datetime.datetime.strptime(time,'%Y-%m-%d %H:%M:%S')
print("输入时间:", time_date)
now_date = datetime.datetime.now()
print("当前时间:",now_date)
while (now_date != time_date):
now_date = datetime.datetime.now()
pass
print("时间到")
click_account()
except:
time = input("时间格式有误:xxxx-xx-xx xx:xx:xx: \n")
# 点击结算按钮
def click_account():
while (1):
try:
account_btn = driver.find_element_by_css_selector('a[id="J_SmallSubmit"][class="submit-btn"]')
account_btn.click()
print(account_btn)
click_submit()
break
except:
pass
# 点击立即提交
def click_submit():
submit_btns = driver.find_elements_by_css_selector('a[class="go-btn"]')
print(submit_btns)
while (len(submit_btns)==0):
submit_btns = driver.find_elements_by_css_selector('a[class="go-btn"]')
submit_btn = submit_btns[0]
submit_btn.click()
if __name__ == '__main__':
# 这是下载在mac中的火狐可执行文件的默认地址
geckodriver = r'/Applications/Firefox.app/Contents/MacOS/geckodriver'
driver = webdriver.Firefox(executable_path=geckodriver)
url = 'https://cart.taobao.com/cart.htm'
# 可以改成你想显示的网页
driver.get(url)
begin()
注意:经测试,从设置的时间开始到提交完订单,最快也需要2-3秒.所以本文章用户淘宝自动抢单是不可靠的,仅作为娱乐学习为主,代码书写规范存在问题,还请多执教