Python之京東商品秒殺的實(shí)現(xiàn)示例
1 環(huán)境
操作系統(tǒng):Windows 10
Python版本:3.9.0
Google Chrome 87.0.4280.88
ChromeDriver 87.0.4280.88
PyCharm 2020.2.3 x64
2 需求分析&前期準(zhǔn)備
2.0 需求分析
目標(biāo)是秒殺京東的訂單,這里面有幾個(gè)關(guān)鍵點(diǎn),首先需要登錄京東,其次你需要準(zhǔn)備好訂單,最后要在指定時(shí)間快速提交訂單。
登錄京東,這里就要用到一個(gè)爬蟲(chóng)利器Selenium,它是一個(gè)自動(dòng)化測(cè)試工具,利用它我們可以驅(qū)動(dòng)瀏覽器執(zhí)行特定的動(dòng)作,如點(diǎn)擊、下拉等等操作,所見(jiàn)即所得。另外對(duì)于一些 JavaScript 渲染的頁(yè)面來(lái)說(shuō),此種抓取方式非常有效。
2.1 Selenium的安裝
Selenium 的安裝很簡(jiǎn)單,dos命令行:
pip3 install selenium

Selenium安裝好之后,并不能直接使用,它需要與瀏覽器進(jìn)行對(duì)接。這里拿Chrome瀏覽器為例。若想使用Selenium成功調(diào)用Chrome瀏覽器完成相應(yīng)的操作,需要通過(guò)ChromeDriver來(lái)驅(qū)動(dòng)。
2.2 ChromeDriver的安裝
這里是ChromeDriver的官方下載地址。
鏈接:https://chromedriver.storage.googleapis.com/index.html
下載之前先來(lái)確認(rèn)下我們使用的Chrome瀏覽器版本。

通過(guò)ChromeDriver的下載鏈接,找到與之對(duì)應(yīng)的Chrome瀏覽器版本,根據(jù)你電腦系統(tǒng)的平臺(tái)類(lèi)型進(jìn)行下載。

下載完成之后,解壓,將其放置在Python安裝路徑下Scripts文件夾中即可

用PyCharm執(zhí)行如下代碼:
from selenium import webdriver # 打開(kāi)Chrome瀏覽器 driver = webdriver.Chrome()
成功打開(kāi)瀏覽器,則證明ChromeDriver版本沒(méi)問(wèn)題,即可正常使用Selenium。
from selenium import webdriver
import datetime
import time
# 打開(kāi)Chrome瀏覽器
driver = webdriver.Chrome()
def auto_buy(username, password, purchase_list_time):
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "打開(kāi)登陸界面")
driver.get("https://passport.jd.com/new/login.aspx")
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "開(kāi)始填寫(xiě)賬號(hào)密碼")
driver.find_element_by_link_text("賬戶(hù)登錄").click()
driver.find_element_by_name("loginname").send_keys(username)
driver.find_element_by_name("nloginpwd").send_keys(password)
driver.find_element_by_id("loginsubmit").click()
#print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "手動(dòng)拼圖驗(yàn)證")
#time.sleep(10) #此處睡眠時(shí)間用來(lái)手動(dòng)拼圖驗(yàn)證
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),"登陸成功")
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "等待時(shí)間到達(dá)搶購(gòu)時(shí)間:",purchase_list_time, "......")
while True:
count = 0
for buytime in purchase_list_time:
nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if nowtime == buytime:
try:
count += 1
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "開(kāi)始第 %s 次搶購(gòu)......"%count)
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "打開(kāi)購(gòu)物車(chē)并選中商品")
driver.get("https://cart.jd.com/cart_index") # 打開(kāi)購(gòu)物車(chē)并選中商品
# 如果沒(méi)有全選,點(diǎn)擊全選
if not driver.find_element_by_class_name('jdcheckbox').is_selected():
driver.find_element_by_class_name('jdcheckbox').click()
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "點(diǎn)擊去結(jié)算")
driver.find_element_by_link_text("去結(jié)算").click() # 去結(jié)算
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "點(diǎn)擊提交訂單")
time.sleep(5) #提交訂單前必須等待幾秒【感覺(jué)跟電腦性能快慢有關(guān),不卡的電腦可以適當(dāng)降低嘗試】
if driver.find_element_by_id("order-submit"):
driver.find_element_by_id("order-submit").click() # 提交訂單
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),"訂單提交成功,請(qǐng)前往訂單中心待付款付款")
print("")
continue
except Exception as e:
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "搶購(gòu)出現(xiàn)異常,重新?lián)屬?gòu): ", e)
continue
time.sleep(0.001)
purchase_list_time = [
"2020-12-25 10:00:00",
"2020-12-25 10:00:01",
"2020-12-25 10:00:02",
"2020-12-25 10:00:03",
"2020-12-25 10:00:04",
"2020-12-25 10:00:05",
]
auto_buy('帳號(hào)', '密碼', purchase_list_time)
預(yù)約商品到購(gòu)物車(chē)——>修改代碼搶購(gòu)時(shí)間——>用PyCharm運(yùn)行代碼即可。
到此這篇關(guān)于Python之京東商品秒殺的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python 京東商品秒殺內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python使用Word2Vec進(jìn)行情感分析解析
- Python實(shí)現(xiàn)購(gòu)物評(píng)論文本情感分析操作【基于中文文本挖掘庫(kù)snownlp】
- python snownlp情感分析簡(jiǎn)易demo(分享)
- Python 京東云無(wú)線(xiàn)寶消息推送功能
- python基于scrapy爬取京東筆記本電腦數(shù)據(jù)并進(jìn)行簡(jiǎn)單處理和分析
- python pyppeteer 破解京東滑塊功能的代碼
- Python實(shí)現(xiàn)京東搶秒殺功能
- python 爬蟲(chóng)爬取京東ps4售賣(mài)情況
- Python基于BeautifulSoup爬取京東商品信息
- 使用 Python 在京東上搶口罩的思路詳解
- springboot使用@value讀取配置的方法
- 基于Python+Appium實(shí)現(xiàn)京東雙十一自動(dòng)領(lǐng)金幣功能
- python 爬取京東指定商品評(píng)論并進(jìn)行情感分析
相關(guān)文章
python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)點(diǎn)餐系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫(xiě)for的方法
今天小編就為大家分享一篇tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫(xiě)for的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python實(shí)現(xiàn)繪制多角星實(shí)例
這篇文章要給大家分享Python實(shí)現(xiàn)繪制多角星的實(shí)例,在具備一定的Python編程基礎(chǔ)以后,我們可以結(jié)合for循環(huán)進(jìn)行多角星的編寫(xiě),只要簡(jiǎn)單的幾次循環(huán),即可以極大的解決重復(fù)編寫(xiě)相同代碼方面的問(wèn)題,下面小編將以三角星,五角星為例,進(jìn)而引入如何繪制多角星,需要的朋友可以參考一下2021-11-11
Python圖像運(yùn)算之圖像灰度直方圖對(duì)比詳解
本篇文章將結(jié)合直方圖分別對(duì)比圖像灰度變換前后的變化,方便大家更清晰地理解灰度變換和閾值變換,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-08-08
python如何使用正則表達(dá)式的前向、后向搜索及前向搜索否定模式詳解
這篇文章主要給大家介紹了關(guān)于python如何使用正則表達(dá)式的前向、后向搜索及前向搜索否定模式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-11-11
Django開(kāi)發(fā)web后端對(duì)比SpringBoot示例分析
這篇文章主要介紹了Django開(kāi)發(fā)web后端對(duì)比SpringBoot示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
使用python?matplotlib畫(huà)折線(xiàn)圖實(shí)例代碼
Matplotlib是一個(gè)Python工具箱,用于科學(xué)計(jì)算的數(shù)據(jù)可視化,下面這篇文章主要給大家介紹了關(guān)于如何使用python?matplotlib畫(huà)折線(xiàn)圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Python實(shí)現(xiàn)多腳本處理定時(shí)運(yùn)行
這篇文章主要介紹了Python實(shí)現(xiàn)多腳本處理定時(shí)運(yùn)行,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06

