python实现电商平台秒杀商品脚本程序

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途。

在这里插入图片描述

前几天下载了Webdriver模块,经过简单的研究,发现这个模块可以做很多有意思的事情,下面我就用一个实例来理解webdriver的此处操作(完整代码在文章末尾)。

  • 浏览器:谷歌chrome浏览器
  • 预先安装模块:selenium模块,Webdriver
  • 编程语言:Python

首先观察正常购物流程(以京东商城为例)

打开京东网址(www.jd.com)→点击登录→选择账号密码登录→输入账号密码→打开购物车,选择想要购买的物品→点击去结算→付款购买

1.首先导入第三方模块,指定webdriver位置

1 from selenium import webdriver
2 import time
3 
4 #将账号密码赋给变量name、password
5 password = '京东密码'
6 name = '京东账号'
7 #指定webdriver位置
8 driver = webdriver.Chrome('/home/chromedriver')

2、打开京东网址

driver.get('https://www.jd.com/')

3.点击登录选项首先将鼠标移动至登录选项,右击检查

在这里插入图片描述

发现可以根据文字内容定位到选项、

在这里插入图片描述

发现可以根据文字内容定位到选项

在这里插入图片描述

#点击登录选项
driver.find_element_by_link_text('你好,请登录').click()

4.进入登录界面,自动输入账号密码,登录账号

在这里插入图片描述

右击检查,发现<账户登录>选项可以通过文本定位,<账号输入框><密码输入框>分别由name属性进行定位,<登录>使用ID进行定位

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1 #点击账户登录
2 driver.find_element_by_link_text('账户登录').click()
3 #输入账号密码
4 driver.find_element_by_id('loginname').send_keys(num)
5 driver.find_element_by_id('nloginpwd').send_keys(pwd)
6 #点击登录键
7 driver.find_element_by_id('loginsubmit').click()
8 #延时5s
9 time.sleep(5)

在我们点击登录之后,可能会出现一个滑块验证的环节,此环节可以用机器学习的方法自动通过验证,但是由于现在只是熟悉webdriver操作,可使用手动操作通过验证。

即在点击<登录>之后,添加延时 time.sleep(5) 并在5s之内通过滑块验证

5.点击购物车,勾选想要购买的物品,点击付款

在这里插入图片描述

购物车可以通过文本定位

在这里插入图片描述

driver.find_element_by_link_text('我的购物车').click()

然后要勾选要下单的物品,点击去结算

勾选框我使用的是谷歌浏览器的xpath helper插件来进行定位,结算键可以同样使用文本来定位

在这里插入图片描述

#使用xpath语法定位复选框
driver.find_element_by_xpath("/html[@class=' jd_retina']/body/div[@id='container']/div[@class='cart-warp']/div[@class='w']/div[@id='jd-cart']/div[@class='cart-main cart-main-new']/div[@id='cart-list']/div[@id='cart-item-list-01']/div[@id='vender_8888']/div[@class='item-list']/div[@id='product_promo_50077743033']/div[@id='product_100008492922']/div[@class='item-form']/div[@class='cell p-checkbox']/div[@class='cart-checkbox']/input[@class='jdcheckbox']").click()
#点击去结算
driver.find_element_by_link_text('去结算').click()

此时若直接使用之前的定位方法来勾选和结算,代码运行后会报错,这是因为点击我的购物车之后,打开了一个新的网页,但是代码执行的默认网页还是在www.jd.com

所以程序找不到我们定位的位置,所以会提示错误

该段的正确代码是

#保存初始网页
wnhandle = driver.current_window_handle
#点击我的购物车
driver.find_element_by_link_text('我的购物车').click()
#保存打开的所有网页
all_handle = driver.window_handles
#遍历保存的网页
for handle in all_handle:
        #判断当前打开的网页是否为初始网页
       if handle != wnhandle:
       #若为新打开的网页,则切换到新网页
           driver.switch_to.window(handle)
#设置延时
time.sleep(2)
#勾选复选框
driver.find_element_by_xpath("/html[@class=' jd_retina']/body/div[@id='container']/div[@class='cart-warp']/div[@class='w']/div[@id='jd-cart']/div[@class='cart-main cart-main-new']/div[@id='cart-list']/div[@id='cart-item-list-01']/div[@id='vender_8888']/div[@class='item-list']/div[@id='product_promo_50077743033']/div[@id='product_100008492922']/div[@class='item-form']/div[@class='cell p-checkbox']/div[@class='cart-checkbox']/input[@class='jdcheckbox']").click()
#点击结算
driver.find_element_by_link_text('去结算').click()

6.封装函数

将以上函数封装到模块中,方便调用

def login_in(self,num,pwd):

7.定义模块调用

def run_driver(self,num,pwd):
     self.login_in(num,pwd)

完整代码

 1 from selenium import webdriver
 2 import time
 3 
 4 name = '账号'
 5 password = '密码'
 6 
 7 #指定webdriver位置
 8 driver = webdriver.Chrome('/home/jmhao/chromedriver')
 9 #打开京东网址
10 driver.get('https://www.jd.com/')
11 
12 class pay:
13     #登录模块
14     def login_in(self,num,pwd):
15         driver.find_element_by_link_text('你好,请登录').click()
16         time.sleep(1)
17         driver.find_element_by_link_text('账户登录').click()
18         time.sleep(1)
19         driver.find_element_by_id('loginname').send_keys(num)
20         driver.find_element_by_id('nloginpwd').send_keys(pwd)
21         time.sleep(1)
22         driver.find_element_by_id('loginsubmit').click()
23         time.sleep(5)
24         wnhandle = driver.current_window_handle
25         driver.find_element_by_link_text('我的购物车').click()
26         all_handle = driver.window_handles
27         for handle in all_handle:
28             if handle != wnhandle:
29                 driver.switch_to.window(handle)
30         time.sleep(2)
31         driver.find_element_by_xpath("/html[@class=' jd_retina']/body/div[@id='container']/div[@class='cart-warp']/div[@class='w']/div[@id='jd-cart']/div[@class='cart-main cart-main-new']/div[@id='cart-list']/div[@id='cart-item-list-01']/div[@id='vender_8888']/div[@class='item-list']/div[@id='product_promo_50077743033']/div[@id='product_100008492922']/div[@class='item-form']/div[@class='cell p-checkbox']/div[@class='cart-checkbox']/input[@class='jdcheckbox']").click()
32         driver.find_element_by_link_text('去结算').click()
33 
34     #运行
35     def run_driver(self,num,pwd):
36         self.login_in(num,pwd)
37 
38 
39 if __name__ == '__main__':
40     jd = pay()
41     jd.run_driver(name, password)

此段代码只到结算步骤,只供熟悉webdriver操作使用

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值