use selenium+chromedriver to taobao automatically
原理
利用chromedriver来驱动chrome进行各种模拟各种行为操作, 然后利用selenium提供的接口来操作chromedriver.
安装ChromeDriver
当然这个的默认前提是你已经安装了Chrome.
下载
下载地址: http://chromedriver.chromium.org/ , 如果国内有被墙的情况请自行解决, 其次最重要的一点是版本, 一定要下载与自己浏览器想对应的版本.
安装
下载下来的直接就是一个驱动, 其实不存在安装的问题, 只需要解压出来就行, 但是需要添加环境变量. 所以我选在将其拷贝放入已经在环境变量的目录中: /usr/local/bin/.
网上说需要给他执行权限(实际我没有做一步操作):
sudo chmod u+x,o+x /usr/local/bin/chromedriver
编程
原理很简单, 就是把购物的几步操作用代码来实现, 依次是登陆、购物车选中、购买.
from selenium import webdriver
import datetime
import time
# 登陆淘宝
def login():
browser.get("https://www.taobao.com")
time.sleep(3)
if browser.find_element_by_link_text("亲,请登录"):
browser.find_element_by_link_text("亲,请登录").click()
print(f"请尽快扫码登录")
time.sleep(10)
# 勾选购物车
def picking(method):
browser.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
if method == 0:
while True:
try:
if browser.find_element_by_id("J_SelectAll1"):
browser.find_element_by_id("J_SelectAll1").click()
break
except:
print(f"找不到购买按钮")
else:
print(f"请手动勾选需要购买的商品")
time.sleep(5)
def buy(times):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 对比时间,时间到的话就点击结算
if now > times:
# 点击结算按钮
while True:
try:
if browser.find_element_by_link_text("结 算"):
browser.find_element_by_link_text("结 算").click()
print(f"结算成功,准备提交订单")
break
except:
pass
# 点击提交订单按钮
while True:
try:
if browser.find_element_by_link_text('提交订单'):
browser.find_element_by_link_text('提交订单').click()
print(f"抢购成功,请尽快付款")
except:
print(f"再次尝试提交订单")
time.sleep(0.01)
if __name__ == "__main__":
# 请指定勾选购物车商品的方式
# 0代表,自动勾选购物车内的全部商品。注意:若购物车中存在失效商品时无法进行全选,请勿使用此项
# 1代表,手动勾选购物车内的商品
method = 1
# 请指定抢购时间,时间格式:"2019-06-01 10:08:00.000"
times = "2019-06-04 08:35:00.000"
# 自动打开Chrome浏览器
browser = webdriver.Chrome()
# 设置浏览器最大化显示
browser.maximize_window()
# 扫码登录淘宝
login()
# 勾选准备结算的商品
picking(method)
# 等待抢购时间,定时秒杀
buy(times)
代码我已经开源在我的Gitee: https://gitee.com/jerryqi/python-practice
use selenium+chromedriver to taobao automatically的更多相关文章
- 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图
先上结果: 之前 在公司业务中用过java+Selenium+ChromeDriver ,使用起来非常顺手,可以完美模拟真实的用户浏览行为.最近休息的时候想用C#也试一下,于是有了本文. 实现原理一样 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
- selenium + ChromeDriver 实战系列之启信宝(一)
之前写了一篇selenium + ChromeDriver的一些入门的知识,这篇博客里面找了启信宝这个网站,简单的进行了一个实战练习.本篇博客的结构如下: 首先会给出一些使用seleniu ...
- centos7无GUI运行selenium chromedriver 亲测可用!
1. 安装chrome 首先安装google的epel源 vi /etc/yum.repos.d/google.repo [google] name=Google-x86_64 baseurl=htt ...
- selenium chromedriver与chrome版本对应表
chromedriver版本 支持的Chrome版本 v2.41 v67-69 v2.40 v66-68 v2.39 ...
- python3.6中使用selenium + chromedriver访问Chrome浏览器时报错
from selenium import webdriver from selenium.webdriver.chrome.options import Options if __name__ == ...
- 爬虫&Selenium&ChromeDriver
一.Selenium selenium是什么 Selenium [1] 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, ...
- selenium异步爬取(selenium+Chromedriver)
在我们进行数据爬去的过程中,我们有时候会遇到异步加载信息的情况,以豆瓣电影分来排行榜为例,当我们在查看数据的过程中,会发现网页源码中并不包含我们想要的全部数据,但是当我们在进行向下滚动的时候,数据会一 ...
- 一次失败的Selenium chromedriver切换
背景 Selenium webdriver一直使用Firefox作为浏览器来跑webtest, 但是最近发现ff有时会报超时的错误,于是想到使用chromedriver来提升稳定性.本想只把.fire ...
随机推荐
- cometoj---contest#3 棋盘
棋盘:(状压dp) 传送门:https://www.cometoj.com/contest/38/problem/B?problem_id=1535 题目描述 小猫有一个 2×N 的棋盘,每一个格子放 ...
- mac系统提示 interactive intelligence 的恼人问题
处理 interacti intelligence 提示问题记录 二手购买了一台电脑,从最初的小白到现在稍微熟悉mac的使用, 一直困扰我的便是一个提示, 上图 困扰多年, 记录一下解决和尝试过程吧. ...
- golang-切片
切片练习 package main import "fmt" /*func main() { arr := [10]int {1, 2, 3, 4, 5, 6, 7, 8, 9, ...
- 5、vueJs基础知识05
vue2.0相比于1.0的变化 1.在每个组件模板中,不再支持片段代码,需要一个根元素包裹 组件中模板: 之前: <template> <h3>我是组件</h3>& ...
- python 嵌套字典取值增强版
def getdictvalue(d,code): result=[] if isinstance(d, dict) : try: value = d[code] result.append(valu ...
- fdconnection自动重连
fdconnection自动重连 1)设置 FDConnection1.ResourceOptions.AutoReconnect := True; 控制自动连接的恢复. 使用AutoReconnec ...
- GDI+ Image 读取内存二进制流显示图片
int iBmpSize = cd.nTotleLen; HGLOBAL hMemBmp = GlobalAlloc(GMEM_FIXED, iBmpSize); IStream* pStmBmp = ...
- 表观 | Enhancer | ChIP-seq | 转录因子 | 数据库专题
需要长期更新! 参考:生信修炼手册 enhancer的基本概念: 长度几十到几千bp,作用是提高靶基因活性,属于顺式作用原件,DNA作用到DNA,转录因子就是反式,是结合到DNA的蛋白. 1981年, ...
- 007 搜索API
1.说明 这个API用于在elasticsearch中搜索内容,用户可以通过发送以查询字符串为参数的get请求进行搜索,也可以在post请求的消息体中进行查询. 2.多索引 允许搜索所有的索引或某些特 ...
- Nginx 配置操作注意事项
Nginx reload 会中断现有连接吗? - 知乎https://www.zhihu.com/question/57096250 在NGINX上配置HTTPS---血的教训--要重启NGINX - ...