Python版本:3.7(具体是几忘了,懒得查了)
selenium库 版本:4.4.3
程序能跑,但是抢热门商品的成功率为0% QAQ
from selenium import webdriver
from selenium.webdriver.common.by import By
import datetime
import time
from os import path
d = path.dirname(__file__)
abspath = path.abspath(d)
# 连接Chrome浏览器
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path="C:/Program Files/Google/Chrome/Application/chromedriver", options=options)
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("请在20秒内完成扫码")
time.sleep(20)
driver.get("https://cart.taobao.com/cart.htm")
time.sleep(5)
# 点击全选按钮
while 1 == 1:
if driver.find_element(By.ID,"J_SelectAll1"):
driver.find_element(By.ID,"J_SelectAll1").click()
break
print("login success")
def buy(buytime):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
print('Now:', now)
# 对比时间,时间到的话就点击结算
if now > buytime:
try:
# 点击结算按钮
while 1==1:
if driver.find_element(By.ID,"J_Go"):
driver.find_element(By.ID,"J_Go").click()
break
if driver.find_element(By.LINK_TEXT,"提交订单"):
driver.find_element(By.LINK_TEXT,"提交订单").click()
except:
time.sleep(0.1)
print("fail:",now)
time.sleep(0.1)
if __name__ == "__main__":
times = "2022-09-11 10:00
:00.000000" # 时间格式:"2018-09-06 11:20:00.000000"
login()
buy(times)
关于代吗的视频讲解
代码参考
解决办法:下载Chrome浏览器的webdriver
记得webdriver的版本选择与chrome版本最相近的即可
在运用selenium库后,我利用绝对路径进行打开,避免了网上说要把这安装包放在python根目录下和Chrome根目录下这一麻烦
相关代碎片:
from selenium import webdriver
# 连接Chrome浏览器
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path="C:/Program Files/Google/Chrome/Application/chromedriver", options=options)
参考大部分博文,得知find_element_by_属性在新版本的selenium库中已被弃用
大部分都说改成driver.find_element(By.属性,"文字")
后即可
但是在实际的应用过程中,还是会报错,经过参考,发现还需要导入By才可以使用
相关代码碎片:
from selenium import webdriver
from selenium.webdriver.common.by import By
if driver.find_element(By.LINK_TEXT,"亲,请登录"):
driver.find_element(By.LINK_TEXT,"亲,请登录").click()
同上,利用了相同的解决办法
相关代码碎片:
from selenium import webdriver
from selenium.webdriver.common.by import By
while 1==1:
if driver.find_element(By.ID,"J_Go"):
driver.find_element(By.ID,"J_Go").click()
break
不知道去掉死循环后能不能行,还没试过。。。毕竟只要程序能动、而且效率还不错的情况下,就不要轻易地去动它~
科技确实改变命运,比如倒爷可以在互联网上出售货物啦QAQ东西更难抢了,可恶!!!
但往非功利的角度来看(对对对我在试图安慰我自己QWQ),这一次的实践中浅尝了一下爬虫,也学会了怎么F12以后审查元素,要想用鼠标指哪就能定位到哪里,需要点一个按钮。
然后发现除了在购物车里秒杀之外,还有一种……需要到点反复刷新失效的宝贝界面,等客服人工上货以后才能买到的那种秒杀。有点想试,但最近没钱了【落泪】。
有空的话会试试滴,但我对它的成功率不抱什么希望【叹气】。