python 製作淘寶秒殺指令碼
1. 安裝pycharm。網上教程很多。
2. 安裝 Selenium 庫。
Selenium支援很多瀏覽器,我選擇的是Firefox瀏覽器。
因為我這裡是Python3環境,自帶的又pip,所以安裝selenium直接使用pip安裝
安裝方法:
--開啟cmd;
--輸入命令進入Python36/Scripts(找到下圖的目錄)目錄下;
--輸入命令 pip install selenium;
--回車,等待自動安裝;
--當最後一行程式碼出現Successfully install selenium-XX時,表示安裝成功。
3. 外掛 FireBug
FireBug 是火狐瀏覽器的一款檢視程式碼元素的外掛,可以快速的定位元素,selenium的重點就是元素定位,只有定到位了,才能進行下一步操作。
安裝方法:
--開啟Firefox瀏覽器,點選右上角按鈕
--點選附加元件
--點選擴充套件
--搜尋firebug
--點選安裝,重啟瀏覽器
--測試安裝成功,按F12出現如下畫面,表示firebug已經安裝成功了
4. 安裝 驅動安裝 geckodriver(windows環境下)
檔案連結在下方。
使用方法:
1、下載完成解壓;
2、將 geckodriver 放到 該瀏覽器可執行檔案的路徑下
3、新增到環境變數中
5. 設定 pycharm
先建立一個工程
開啟 pycharm -> 開啟 file -> 點選 setting -> 點選最右邊的設定按鈕
點選 add, 在 Virtualenv Environment 和 System Interpreter 並選定找到本文給的 python 執行資料夾,Location 是自己建立的工作資料夾,裡面為空,參考操作如下:
開啟 pycharm -> 開啟 file -> 點選 setting
將 project Interpreter 設定為 本文給的檔案,或是自己本身的 python自帶執行庫
6. 新建一個python檔案
輸入以下程式:
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
得到如下:
則成功搭建好環境。
7. 淘寶秒殺程式
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 2018/09/05
# 淘寶秒殺指令碼,掃碼登入版
import os
from selenium import webdriver
import datetime
import time
from os import path
from selenium.webdriver.common.action_chains import ActionChains
d = path.dirname(__file__)
abspath = path.abspath(d)
driver = webdriver.Firefox()
driver.maximize_window()
def login():
# 開啟淘寶登入頁,並進行掃碼登入
driver.get("https://www.taobao.com")
time.sleep(3)
if driver.find_element_by_link_text("親,請登入"):
driver.find_element_by_link_text("親,請登入").click()
print("請在30秒內完成掃碼")
time.sleep(30)
driver.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
# 點選購物車裡全選按鈕
# if driver.find_element_by_id("J_CheckBox_939775250537"):
# driver.find_element_by_id("J_CheckBox_939775250537").click()
# if driver.find_element_by_id("J_CheckBox_939558169627"):
# driver.find_element_by_id("J_CheckBox_939558169627").click()
if driver.find_element_by_id("J_SelectAll1"):
driver.find_element_by_id("J_SelectAll1").click()
now = datetime.datetime.now()
print('login success:', now.strftime('%Y-%m-%d %H:%M:%S'))
def buy(buytime):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對比時間,時間到的話就點選結算
if now > buytime:
try:
# 點選結算按鈕
if driver.find_element_by_id("J_Go"):
driver.find_element_by_id("J_Go").click()
driver.find_element_by_link_text('提交訂單').click()
except:
time.sleep(0.1)
print(now)
time.sleep(0.1)
if __name__ == "__main__":
# times = input("請輸入搶購時間:")
# 時間格式:"2018-09-06 11:20:00.000000"
login()
buy("2018-10-22 18:55:00.000000")
以上程式是參照對應的 html 原始碼的對應元素所選擇的。舉例如下:
中對應的 J_SelectAll1 對應如下:
關於 selenium 和 html 原始碼的互動以後有時間再來研究。
資料連結如下:
https://download.csdn.net/download/hc372893308/10738737