作者:Eason_LYC
悲觀者預(yù)言失敗,十言九中。 樂觀者創(chuàng)造奇跡,一次即可。
一個(gè)人的價(jià)值,在于他所擁有的??梢圆粚W(xué)無術(shù),但不能一無所有!
技術(shù)領(lǐng)域:WEB安全、網(wǎng)絡(luò)攻防
關(guān)注WEB安全、網(wǎng)絡(luò)攻防。我的專欄文章知識(shí)點(diǎn)全面細(xì)致,邏輯清晰、結(jié)合實(shí)戰(zhàn),讓你在學(xué)習(xí)路上事半功倍,少走彎路!
個(gè)人社區(qū):極樂世界-技術(shù)至上
追求技術(shù)至上,這是我們理想中的極樂世界~(關(guān)注我即可加入社區(qū))
背景
寫這篇文章的目的僅是為了方便給初學(xué)者介紹一下如何上手寫一些好玩的腳本,能更快的學(xué)以致用。
從前年開始,天貓和京東就推出各類搶購活動(dòng),最有代表性的就是53°飛天茅臺(tái)的搶購,那個(gè)搶到后真金白銀能賺到錢。只是現(xiàn)在再也不是一個(gè)腳本就能搞定的了,已經(jīng)升級(jí)成為服務(wù)器加網(wǎng)絡(luò)的專業(yè)團(tuán)隊(duì)才能玩的搶購了。
本文介紹的腳本僅是實(shí)現(xiàn)淘寶從購物車自動(dòng)全選、結(jié)算、下單直到付款的自動(dòng)化腳本工具,是一個(gè)非常初級(jí)簡(jiǎn)單的腳本。搶到這個(gè)茅臺(tái)不太可能,但是一般的商品自動(dòng)化沒問題。但是對(duì)于初學(xué)者能非常好的get到思路,并能直接看到效果。
天貓超市業(yè)務(wù)邏輯
寫任何腳本之前,都要通過正常的訪問,明確基本的業(yè)務(wù)邏輯。本文關(guān)注天貓商城的購買流程,那天貓商城購買流程有哪些呢?
本腳本實(shí)現(xiàn)上市步驟2、3、4的自動(dòng)化操作
此類python腳本基礎(chǔ)知識(shí)
一定要會(huì)的兩個(gè)python第三方庫,分別是第三方庫selenium
和python內(nèi)置庫requests
python selenium 基本使用方式
Python Selenium 是一種用于自動(dòng)化測(cè)試 Web 應(yīng)用程序的工具,它使用 Python 編寫的腳本來控制 Web 瀏覽器進(jìn)行操作。
基本使用方式如下:
-
安裝 Selenium:可以通過 pip 安裝,在終端輸入命令 “pip install selenium” 即可。
-
下載 WebDriver:Selenium 需要與瀏覽器配合使用,所以你需要下載與使用的瀏覽器相對(duì)應(yīng)的 WebDriver。
-
導(dǎo)入 Selenium:在 Python 代碼中導(dǎo)入 selenium 庫。
-
創(chuàng)建 WebDriver 對(duì)象:使用以下代碼創(chuàng)建 WebDriver 對(duì)象:
from selenium import webdriver
driver = webdriver.Firefox()
- 操作瀏覽器:使用 WebDriver 的方法操作瀏覽器,如打開網(wǎng)頁、填寫表單、點(diǎn)擊按鈕等。
# 舉例
driver.get("https://www.google.com")
search_box = driver.find_element_by_name("q")
search_box.send_keys("Selenium")
search_box.submit()
- 關(guān)閉瀏覽器:使用以下代碼關(guān)閉瀏覽器:
driver.quit()
官方文檔
python3 內(nèi)置庫requests
Python3 內(nèi)置的 requests 庫是一個(gè)非常流行的 HTTP 客戶端庫,提供了簡(jiǎn)潔易用的 API,幫助你快速發(fā)送 HTTP 請(qǐng)求。
- 發(fā)送 GET 請(qǐng)求:
import requests
url = 'https://www.example.com/api/get_data'
response = requests.get(url)
if response.status_code == 200:
data = response.json()
# do something with data
else:
print('Failed to fetch data')
- 發(fā)送帶有參數(shù)的 GET 請(qǐng)求:
import requests
url = 'https://www.example.com/api/search'
params = {'query': 'python', 'page': 1}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
# do something with data
else:
print('Failed to search data')
- 發(fā)送 POST 請(qǐng)求
import requests
url = 'https://www.example.com/api/create_user'
data = {'username': 'example_user', 'email': 'example_user@example.com'}
response = requests.post(url, data=data)
if response.status_code == 201:
result = response.json()
# do something with result
else:
print('Failed to create user')
這些僅僅是 requests 庫的基本用法,它還有許多其他功能,例如發(fā)送帶有請(qǐng)求頭、cookie、文件等的請(qǐng)求,更多用法請(qǐng)參考官方文檔:http://docs.python-requests.org/en/latest/
使用Selenium實(shí)現(xiàn)自動(dòng)化搶購茅臺(tái)
完整腳本如下:
import datetime
from time import sleep
from selenium import webdriver
flag = False
# 秒殺時(shí)間 瀏覽器時(shí)間
times = '2023-02-12 20:00:00'
print("*"*48)
print("【重要】此腳本僅用于演示學(xué)習(xí)使用,不得用于任何實(shí)際環(huán)境或支付環(huán)節(jié)?。。?)
print("【重要】程序會(huì)自動(dòng)在目標(biāo)時(shí)間,打開購物車點(diǎn)擊結(jié)算,最終至付款界面,需手動(dòng)完成付款?。?!")
print("【tips】請(qǐng)?zhí)崆霸O(shè)置默認(rèn)郵寄地址,準(zhǔn)備好手機(jī)掃碼登陸。建議提前40s運(yùn)行程序。")
print("目標(biāo)時(shí)間:",times)
print("*"*48)
browser = webdriver.Chrome()
browser.get('https://login.taobao.com/')
sleep(2)
browser.find_element_by_xpath("/html/body/div/div[2]/div[3]/div/div/div/div[1]/i").click()
print(f"請(qǐng)?jiān)?0s內(nèi)完成掃碼登陸")
sleep(16)
browser.get("https://cart.taobao.com/cart.htm?spm=a21bo.jianhua.1997525049.1.5af911d9v3sXxZ&from=mini&pm_id=1501036000a02c5c3739")
sleep(4)
# 購物車全選
while 1==1:
if browser.find_element_by_id("J_SelectAll1"):
browser.find_element_by_id("J_SelectAll1").click()
break
print("waiting for time...")
while True:
# 獲取電腦現(xiàn)在的時(shí)間
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對(duì)比時(shí)間,時(shí)間到的話就點(diǎn)擊立即購買
if now >= times:
print(now)
try:
if browser.find_element_by_link_text("結(jié) 算"):
browser.find_element_by_link_text("結(jié) 算").click()
print("1.已成功點(diǎn)擊結(jié)算")
flag = True
break
except:
pass
if flag==True:
count = 0
while True:
try:
if browser.find_element_by_link_text("提交訂單"):
browser.find_element_by_link_text("提交訂單").click()
print("1.已成功點(diǎn)擊結(jié)算")
flag = True
print("2.已下單成功,進(jìn)入付款界面,請(qǐng)盡快手動(dòng)完成付款")
done_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
print("下單時(shí)間:", done_time)
break
except:
count +=1
print("未成功進(jìn)入付款界面,再次嘗試! 已嘗試",count)
if count == 600:
break
pass
tips: 腳本使用前請(qǐng)先設(shè)置腳本運(yùn)行時(shí)間,就是times = 設(shè)置的時(shí)間(不得早于實(shí)際時(shí)間,否則腳本運(yùn)行無效)
這是一個(gè)搶購腳本,它使用了 Selenium 模擬用戶操作,搶購商品。
-
datetime 模塊是 python 自帶的時(shí)間模塊,用于獲取當(dāng)前時(shí)間,對(duì)比目標(biāo)時(shí)間。
-
sleep 函數(shù)來自 time 模塊,可以暫停代碼執(zhí)行一段時(shí)間,用于讓程序等待模擬人類操作的時(shí)間。
-
webdriver 是 Selenium 的核心模塊,提供了操作瀏覽器的 API,包括打開瀏覽器,點(diǎn)擊,查找元素等等。
-
browser.get 函數(shù)用于打開一個(gè) URL。
-
browser.find_element_by_xpath 用于在頁面中查找元素,通過元素的 xpath 定位。
-
browser.find_element_by_id 用于在頁面中查找元素,通過元素的 id 定位。
-
browser.find_element_by_link_text 用于在頁面中查找元素,通過元素的文字內(nèi)容定位。
-
browser.click 用于模擬鼠標(biāo)點(diǎn)擊元素。
-
此腳本中,還有多個(gè) while 循環(huán),用于檢查元素是否存在,如果不存在,則繼續(xù)循環(huán)。
-
此腳本僅用于學(xué)習(xí)和演示目的,不得用于任何實(shí)際環(huán)境或支付環(huán)節(jié)!
以下是代碼的詳細(xì)解釋文章來源:http://www.zghlxwxcb.cn/news/detail-798735.html
使用 python3 和 selenium 庫編寫的爬蟲腳本,主要目的是實(shí)現(xiàn)搶購商品的自動(dòng)化操作。
代碼的主要流程如下:
導(dǎo)入所需的庫:
import datetime:用于處理時(shí)間的庫。
from time import sleep:sleep函數(shù)用于延時(shí),方便登陸等操作。
from selenium import webdriver:selenium庫是一個(gè)自動(dòng)化測(cè)試框架,此代碼中使用到了它的 webdriver 模塊。
設(shè)置變量和程序提示信息:
flag 變量用于標(biāo)識(shí)搶購是否成功。
times 變量是秒殺的時(shí)間,此處是一個(gè)字符串,格式為“YYYY-MM-DD HH:MM:SS”。
程序提示信息:通過 print() 函數(shù),在控制臺(tái)輸出一些程序的使用說明和目標(biāo)時(shí)間,以方便使用者了解程序的作用。
瀏覽器的自動(dòng)化操作:
browser = webdriver.Chrome():打開 Chrome 瀏覽器。
browser.get('https://login.taobao.com/'):打開淘寶登陸頁面。
sleep(2):等待2秒,方便用戶完成登陸操作。
browser.find_element_by_xpath("/html/body/div/div[2]/div[3]/div/div/div/div[1]/i").click():通過 xpath 定位元素并點(diǎn)擊,完成掃碼登陸操作。
sleep(16):等待16秒,以等待登陸成
以上僅是用一種方式寫了一個(gè)非常簡(jiǎn)單的腳本,大家可以按差不多的思路使用requests庫,改寫這個(gè)腳本哦~文章來源地址http://www.zghlxwxcb.cn/news/detail-798735.html
到了這里,關(guān)于天貓商城自動(dòng)化python腳本(僅供初學(xué)者學(xué)習(xí)使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!