1. 程式人生 > 程式設計 >python+selenium+chrome實現淘寶購物車秒殺自動結算

python+selenium+chrome實現淘寶購物車秒殺自動結算

之前總是想要買aj,但是淘寶店鋪每次發售手動搶的時候一般都會被黃牛搶走。。。最近畢業設計學習了一下python的東西,所以寫了這麼一個搶購的東西算是解決自己一個小小的願望,這可是aj啊。
我會把內容寫的儘量面向初學者,從頭至尾的過程都會有所提及。程式碼也放在了後面

一、所需環境

Selenium

Selenium是一個開源的自動化測試工具。原理是通過模擬瀏覽器操作,還支援java,python,c#,php等主流的程式語言。

一般爬蟲也支援Selenium,一些經過js渲染的內容和資料和ajax非同步請求出來的資料通過Selenium就能很簡單直觀的爬取下來。但是Selenium的缺點也是顯而易見的,相比於正則的匹配Selenium要載入瀏覽器以及更多的東西,他的執行速度比其他模組慢很多,所以若要保證速度,能不用Selenium就不要用Selenium吧。

web測試自動化:不同於單元測試和介面測試,web測試的自動化更加貼近於人的行為,通過對使用者點選行為和文字輸入行為等進行模擬,當web自動化登入成功後,就去獲取這個資料進行斷言。斷言如果相等,測試通過;如果不相等,測試失敗。使用者可以看到某一項操作是否真的產生了,但是程式只能通過判斷某些“證據”去判斷之前的行為是否真的生效。

二、安裝

下載Selenium並安裝

安裝對應瀏覽器的驅動程式 WebDriver

驅動程式要和自己電腦上的瀏覽器版本相對應,比如我使用的chrome瀏覽器是72版本的,就要下載ChromeDriver2.46這個版本。

在這裡插入圖片描述

在這裡插入圖片描述

下載解壓之後配置環境變數Path即可。 Mac對應的環境變數配置可以參考這位老哥的文章進行配置

三、程式碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-

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("請在15秒內完成掃碼")
    time.sleep(15)
    browser.get("https://cart.taobao.com/cart.htm")
  time.sleep(3)

  now = datetime.datetime.now()
  print('login success:',now.strftime('%Y-%m-%d %H:%M:%S'))


def buy(times,choose):
  is_buyed = False
  # 點選購物車裡全選按鈕
  if choose == 2:
    print("請手動勾選需要購買的商品")
  while True:
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    print('現在時間:',now)
    # 對比時間,時間到的話就點選結算
    if now > times:
      if choose == 1:
        while True:
          try:
            if browser.find_element_by_id("J_SelectAllcbx1"):
              browser.find_element_by_id("J_SelectAllcbx1").click()
              print('嘗試全選')
              break
          except:
            print("找不到全選按鈕")
      # 點選結算按鈕
      try:
        if browser.find_element_by_id("J_Go"):
          browser.find_element_by_id("J_Go").click()
          print("結算成功")
      except:
        pass
      while True:
        try:
          if browser.find_element_by_link_text('提交訂單') and is_buyed == False:
            browser.find_element_by_link_text('提交訂單').click()
            now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            print("搶購成功時間:%s" % now1)
        except:
          print("再次嘗試提交訂單")
      time.sleep(0.005)


if __name__ == "__main__":
  times = input("請輸入搶購時間,格式如(2018-09-06 11:20:00.000000):")
  # 時間格式:"2018-09-06 11:20:00.000000"
  browser = webdriver.Chrome()
  browser.maximize_window()
  login()
  choose = input("到時間自動勾選購物車請輸入“1”,否則輸入“2”:")
  buy(times,choose)

最後run()一把就ok了!!

到此這篇關於python+selenium+chrome實現淘寶購物車秒殺自動結算的文章就介紹到這了,更多相關python+selenium+chrome 秒殺自動結算內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!