python+selenium+chrome實(shí)現(xiàn)淘寶購(gòu)物車秒殺自動(dòng)結(jié)算
之前總是想要買aj,但是淘寶店鋪每次發(fā)售手動(dòng)搶的時(shí)候一般都會(huì)被黃牛搶走。。。最近畢業(yè)設(shè)計(jì)學(xué)習(xí)了一下python的東西,所以寫了這么一個(gè)搶購(gòu)的東西算是解決自己一個(gè)小小的愿望,這可是aj啊。我會(huì)把內(nèi)容寫的盡量面向初學(xué)者,從頭至尾的過程都會(huì)有所提及。代碼也放在了后面
一、所需環(huán)境Selenium
Selenium是一個(gè)開源的自動(dòng)化測(cè)試工具。原理是通過模擬瀏覽器操作,還支持java,python,c#,php等主流的編程語(yǔ)言。
一般爬蟲也支持Selenium,一些經(jīng)過js渲染的內(nèi)容和數(shù)據(jù)和ajax異步請(qǐng)求出來(lái)的數(shù)據(jù)通過Selenium就能很簡(jiǎn)單直觀的爬取下來(lái)。但是Selenium的缺點(diǎn)也是顯而易見的,相比于正則的匹配Selenium要加載瀏覽器以及更多的東西,他的執(zhí)行速度比其他模塊慢很多,所以若要保證速度,能不用Selenium就不要用Selenium吧。
web測(cè)試自動(dòng)化:不同于單元測(cè)試和接口測(cè)試,web測(cè)試的自動(dòng)化更加貼近于人的行為,通過對(duì)用戶點(diǎn)擊行為和文本輸入行為等進(jìn)行模擬,當(dāng)web自動(dòng)化登錄成功后,就去獲取這個(gè)數(shù)據(jù)進(jìn)行斷言。斷言如果相等,測(cè)試通過;如果不相等,測(cè)試失敗。用戶可以看到某一項(xiàng)操作是否真的產(chǎn)生了,但是程序只能通過判斷某些“證據(jù)”去判斷之前的行為是否真的生效。
二、安裝下載Selenium并安裝
安裝對(duì)應(yīng)瀏覽器的驅(qū)動(dòng)程序 WebDriver
驅(qū)動(dòng)程序要和自己電腦上的瀏覽器版本相對(duì)應(yīng),比如我使用的chrome瀏覽器是72版本的,就要下載ChromeDriver2.46這個(gè)版本。
下載解壓之后配置環(huán)境變量Path即可。 Mac對(duì)應(yīng)的環(huán)境變量配置可以參考這位老哥的文章進(jìn)行配置
三、代碼#!/usr/bin/env python# -*- coding: utf-8 -*-from selenium import webdriverimport datetimeimport timedef login(): # 打開淘寶登錄頁(yè),并進(jìn)行掃碼登錄 browser.get('https://www.taobao.com') time.sleep(3) if browser.find_element_by_link_text('親,請(qǐng)登錄'): browser.find_element_by_link_text('親,請(qǐng)登錄').click() print('請(qǐng)?jiān)?5秒內(nèi)完成掃碼') 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 # 點(diǎn)擊購(gòu)物車?yán)锶x按鈕 if choose == 2: print('請(qǐng)手動(dòng)勾選需要購(gòu)買的商品') while True: now = datetime.datetime.now().strftime(’%Y-%m-%d %H:%M:%S.%f’) print(’現(xiàn)在時(shí)間:’, now) # 對(duì)比時(shí)間,時(shí)間到的話就點(diǎn)擊結(jié)算 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('找不到全選按鈕') # 點(diǎn)擊結(jié)算按鈕 try:if browser.find_element_by_id('J_Go'): browser.find_element_by_id('J_Go').click() print('結(jié)算成功') 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('搶購(gòu)成功時(shí)間:%s' % now1)except: print('再次嘗試提交訂單') time.sleep(0.005)if __name__ == '__main__': times = input('請(qǐng)輸入搶購(gòu)時(shí)間,格式如(2018-09-06 11:20:00.000000):') # 時(shí)間格式:'2018-09-06 11:20:00.000000' browser = webdriver.Chrome() browser.maximize_window() login() choose = input('到時(shí)間自動(dòng)勾選購(gòu)物車請(qǐng)輸入“1”,否則輸入“2”:') buy(times, choose)
最后run()一把就ok了!!
到此這篇關(guān)于python+selenium+chrome實(shí)現(xiàn)淘寶購(gòu)物車秒殺自動(dòng)結(jié)算的文章就介紹到這了,更多相關(guān)python+selenium+chrome 秒殺自動(dòng)結(jié)算內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……2. asp批量添加修改刪除操作示例代碼3. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效4. Vue中nvm-windows的安裝與使用教程(親測(cè))5. 刪除docker里建立容器的操作方法6. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介7. 推薦一個(gè)好看Table表格的css樣式代碼詳解8. jsp實(shí)現(xiàn)簡(jiǎn)單用戶7天內(nèi)免登錄9. jsp+servlet實(shí)現(xiàn)猜數(shù)字游戲10. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法
