最近双十一已经到了,笔者为了拓展技术水平研究了一下网络爬虫技术,其中双十一给人印象最深刻地就是抢单了,“爬虫学的好,监狱进得早”。本着学术和技术研究的态度,笔者仅使用了普通商品进行测试操作,不进行盈利活动。

0.引言

抢单操作其含义在于到达预定时间,使得我们电脑控制浏览器自动完成相关过程。

因此可以调用python 的selenium包可以实现与浏览器交互,但目前浏览器厂商未直接支持webdriver,因此我们还需要下载诸如 chromedriver.exe(chrome)等浏览器驱动供python调用。

小编以淘宝网为例,脚本最终可直接进入付款界面,证明了这条技术路线是可行高效的,但最终触发了淘宝的支付异常,不得不说支付宝在这方面做的还是很牛的,所以写下这篇博客权当技术研究记录。

1.准备工作

设备:一台可以上网的计算机

软件:操作系统、浏览器

编程语言:Python

2.下载并导入selenium包

使用pip命令即可简单高效地下载并安装selenium包,我们可从官网下载各个浏览器的驱动程序(.exe),为了方便起见,直接将驱动exe文件放入代码目录下即可。

3.编写代码

小编也是借鉴网络上大佬们发布的相关代码,但随着selenium的最近一次更新,很多网络上的代码已经不能用了,并且这些代码比较基础简单,交互性不够好,因此本人也做了一些改进。

3.1首先导入各种库

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import datetime

3.2实现各种功能

1.webdriver初始化

option = webdriver.ChromeOptions()
option.add_argument('disable-infobars')
driver = webdriver.Chrome(options=option)

2.跳转到指定网站

def get_url(self):global driverdriver.get(self.__base_url)

3.登录淘宝

def login(self):global driverif driver.find_element(By.XPATH,'//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]'):driver.find_element(By.XPATH,'//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()driver.find_element(By.XPATH,'//*[@id="login"]/div[1]/i').click()#点击扫码登陆while True:try:if driver.find_element(By.XPATH,'//*[@id="J_SiteNavLogin"]/div[1]/div/a'):driver.get("https://cart.taobao.com/cart.htm")print("跳转成功!")breakexcept:pass

4.等候购买

def buy(self,times):global driverprint("机器人已经再为您等候时间到来,记得付款嗷!")while True:now=datetime.datetime.now()if now>times:while True:try:if driver.find_element(By.ID,'J_Go').get_attribute("class")=="submit-btn":driver.find_element(By.XPATH,'//*[@id="J_Go"]').click()print("结算成功,准备提交订单!")breakexcept:passwhile True:try:if driver.find_element(By.XPATH,'//*[@id="submitOrderPC_1"]/div/a[2]'):driver.find_element(By.XPATH,'//*[@id="submitOrderPC_1"]/div/a[2]').click()print("提交订单成功,请尽快付款!")breakexcept:pass

上述函数均为类内函数,类的全部代码暂不放出,以防止直接复制粘贴造成技术滥用。

3.3主程序

option = webdriver.ChromeOptions()
option.add_argument('disable-infobars')
driver = webdriver.Chrome(options=option)
robot = Robot("https://www.taobao.com",int(input("请输入密码:")))
print("请输入年-月-日-小时-分钟的格式设置输入时间!~")
Time=input().split("-")
Time=[int(Time[i]) for i in range(len(Time))]
#print(time)
set_time = datetime.datetime(Time[0],Time[1],Time[2],Time[3],Time[4])
robot.get_url()
robot.login()
# 设置抢购时间
robot.buy(set_time)

4.技术细节

抢单软件的关键部分在于Selenium库的调用,其中Selenium库也只使用到了两类方法:

#1.跳转到指定网址
driver.get("目标网址")#2.通过不同属性方法获取目标元素
driver.find_element(By.###,"###")

在第二类方法的基础上我们可以对元素执行更多的操作:

例如获取相关状态信息和进行click()操作:

#获取淘宝购物车结算状态,当勾选了商品时,结算按钮的状态会发生变化,
#我们就可以捕获到并作为判断条件。
if driver.find_element(By.ID,'J_Go').get_attribute("class")=="submit-btn":#获得结算按钮元素的两种方式,并进行了属性判断和行为操作driver.find_element(By.XPATH,'//*[@id="J_Go"]').click()#结算按钮的点击操作。print("结算成功,准备提交订单!")

当然,读者需要一些浏览器调试基础,来获取到相关元素的属性,可自行百度学习,不同购物网站的设计方式均不同,在此不做赘述。

5.写在最后

知识不是用来盈利的工具,而是用来不交智商税。

不想为知识壁垒付费,就要多学习并掌握知识。

希望大家也多学习一下法律知识,别一不小心进去了。

Python+Webdriver实现淘宝、京东等抢单操作相关推荐

  1. 用Python实现淘宝京东毫秒级秒杀,看谁还能抢过我

    你还在为各种活动秒杀 抢不过别人而烦恼吗? 今天就来教你如何用Python来实现淘宝京东毫秒级的抢购,用Python来告诉你,秒杀就是这么简单!!! 妈妈再也不要担心我抢不到限时秒杀特价商品啦!!! ...

  2. python+selenium实现淘宝双十一自动下单

    python+selenium实现淘宝双十一自动下单 思路/工具参考我的另一篇文章python+selenium实现京东秒杀脚本 1. 扫码登录版 # !/usr/bin/env python # 2 ...

  3. python爬取淘宝商品图片

    python爬取淘宝商品的图片 话不多说,直接上代码: from selenium import webdriver from selenium.webdriver.common import key ...

  4. 淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...

  5. python模拟登陆淘宝(更新版)

    python模拟登录淘宝,获取cookies,含sign参数破解(新) 旧版方法总结 流程繁琐 需要操作外部工具fildder,方便性差 理解略显困难 成功率不足 新版两种方法 1 扫码登陆:操作简便 ...

  6. 淘宝京东拼多多抖音淘特1688等多平台商品APP详情API接口(商品详情页面数据接口,商品销量接口,关键词搜索商品销量接口)

    淘宝京东拼多多抖音淘特1688等多平台商品APP详情API接口(商品详情页面数据接口,商品销量接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String ...

  7. 带你搞懂,为什么淘宝京东等使用不需要每次都登录?

    背景 现如今,人人有手机,手机皆为苹果安卓等智能手机: 现如今,人人爱网购,网购皆为淘宝京东等电商平台. 喜欢网购的你是否发现,下载好淘宝京东,只要你时不时的用一下它,就不用登录了. 这是为什么呢? ...

  8. python爬去淘宝西装数据

    python爬去淘宝西装数据 啥也不说代码先码上 #爬取数据 from selenium import webdriver from bs4 import BeautifulSoup import t ...

  9. 淘宝/京东/拼多多/苏宁/抖音等平台详情数据分析接口(APP商品详情源数据接口代码对接教程)

    一.接口背景: 最近做一个电子商务平台的投标工作,写技术标过程中,配到客户做拼多多集成的接口,其中有一个需求就是监控品牌旗下商品价格,维权,具体需求如下描述: 1.零售价格.批销价格.代销价格.都存储 ...

  10. 淘宝京东拼多多抖音淘特等多平台商品聚合商品详情API接口(商品详情页API接口,商品销量Api接口)

    淘宝京东拼多多抖音等多平台商品聚合商品详情API接口(商品详情页API接口,商品销量Api接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET ...

最新文章

  1. maven工程导入eclipse后报错
  2. CSDN在文章头部添加目录
  3. Lerna 运行流程剖析
  4. 【转】2.1【MySQL】运行原理(一):查询sql的执行过程及MySQL架构分析
  5. python模块是一个可共享的程序_python基础-模块
  6. [翻译]超炫列表动画的实现
  7. C++ 4 C++变量及作用域
  8. paip.输出内容替换在Apache 过滤器filter的设置
  9. Ovito教程:高清大图渲染方法
  10. 软件:10款免费无广告的看图软件,总有一款适合你
  11. 好用的电脑端看图软件
  12. ThreeJS 实现等值线效果
  13. A pretty carpet
  14. mysql多条语句union_Mysql同时执行多个select语句——union
  15. R语言---Seewave包和tuneR在声音分析中的应用①关于声音及简单分析
  16. SCI写作之-结构和写作顺序
  17. 等保2.0基本要求与等保1.0对比解读
  18. 做不了爱人,我们做什么
  19. 谷歌AI聊天机器人Bard答错问题,股价大跌7.4%;淘宝屏蔽ChatGPT;孟晚舟4月将首次当值华为轮值董事长丨每日大事件...
  20. 阿里云视频点播相关代码

热门文章

  1. CDR是什么?CorelDRAW矢量绘图
  2. 用Ai制作立体logo
  3. python:类基础
  4. 还没毕业,我就进了HR的黑名单!
  5. 路由器配置双宽带,并相互备份使用
  6. Elasticsearch之近义词/同义词的使用
  7. Error attempting to get column ‘hiredate‘ from result set. Cause: java.sql.SQLFeatureNotSupportedEx
  8. AD21 DXP 快捷键失效的解决办法
  9. 163邮箱注册登录官网是什么?163邮箱登陆流程在这里
  10. 163邮箱邮件服务器域名,注册申请网易免费域名邮箱服务