python基于selenium+cv2+numpy实现登录某大型电商系统
首先贴上我的安装包

一、selenium安装
I.打开pycharm,点击Settings,找到Project Interpreter,点击右边的下拉菜单下的show All...选项
II.点击show All...选项后,点击框框中的+号
III.在I步骤的project Interpeter那里选择你加入的python路径,如出现pip、selenium、setuptools模块则代表成功了,可以使用selenium了

二、cv2安装
这个步骤参考了这篇博文:https://blog.csdn.net/u010128736/article/details/52713204
遵循上步:I. II.
在I步骤的project Interpeter那里选择你加入的python路径,如出现opencv-python 、cv2wrap模块则代表成功了,可以使用cv2了,这里的坑还是很多啊

三、numpy安装
遵循上步:I. II.
在I步骤的project Interpeter那里选择你加入的python路径,如出现numpy模块则代表成功了,可以使用numpy了

四:Python+selenium的webdriver打开浏览器进入登录页面

def login(username, password):
driver.get("https://passport.jd.com/new/login.aspx")
time.sleep(3)
driver.find_element_by_link_text("账户登录").click()
driver.find_element_by_name("loginname").send_keys(username)
driver.find_element_by_name("nloginpwd").send_keys(password)
driver.find_element_by_id("loginsubmit").click()
while True:
time.sleep(3)
a = get_image_position(True)
if a:
break
time.sleep(3)
driver.get("https://cart.jd.com/cart.action")
time.sleep(3)
driver.find_element_by_id("toggle-checkboxes_down").click()
driver.find_element_by_link_text("去结算").click()
time.sleep(2)
driver.find_element_by_id("order-submit").click()
now = datetime.datetime.now()
#now_time = now.strftime('%Y-%m-%d %H:%M:%S')
print(now.strftime('%Y-%m-%d %H:%M:%S'))
print('login success, you can ou up!')
五:获取图形验证的图片,并滑动滑块实现滑块验证处理
# 获取图形验证的图片,并滑动滑块实现滑块验证处理
def get_image_position(flag):
# 获取滑块图片的下载地址
try:
image1 = driver.find_element_by_class_name('JDJRV-smallimg').find_element_by_xpath('img').get_attribute('src')
except BaseException:
flag= True
return flag
# 获取背景大图图片的下载地址
image2 = driver.find_element_by_class_name('JDJRV-bigimg').find_element_by_xpath('img').get_attribute('src')
# print("image1:", image1)
# print("image2:", image2)
if image1 is None or image2 is None:
return if driver.find_element_by_class_name('JDJRV-smallimg').is_displayed() is False:
return image1_name = 'slide_block.png' # 滑块图片名
image2_name = 'slide_bkg.png' # 背景大图名 # 下载滑块图片并存储到本地
request.urlretrieve(image1, image1_name)
# 下载背景大图并存储到本地
request.urlretrieve(image2, image2_name) # 获取图片,并灰化
block = cv2.imread(image1_name, 0)
template = cv2.imread(image2_name, 0) # 二值化之后的图片名称
block_name = 'block.jpg'
template_name = 'template.jpg'
# 将二值化后的图片进行保存
cv2.imwrite(template_name, template)
cv2.imwrite(block_name, block)
block = cv2.imread(block_name)
block = cv2.cvtColor(block, cv2.COLOR_BGR2GRAY)
block = abs(255 - block)
cv2.imwrite(block_name, block) block = cv2.imread(block_name)
template = cv2.imread(template_name) # 获取偏移量
result = cv2.matchTemplate(block, template, cv2.TM_CCOEFF_NORMED) # 查找block图片在template中的匹配位置,result是一个矩阵,返回每个点的匹配结果 x, y = np.unravel_index(result.argmax(), result.shape) # 获取滑块
element = driver.find_element_by_class_name('JDJRV-slide-inner.JDJRV-slide-btn')
# 滑动滑块
ActionChains(driver).click_and_hold(on_element=element).perform()
# print("x方向的偏移", int(y * 0.4 + 18), 'x:', x, 'y:', y)
ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=y, yoffset=0).perform()
# sleep(1)
ActionChains(driver).release(on_element=element).perform()
time.sleep(3)
源码 :GitHub
如果觉得有用请帮我点击star 防丢失哦
python基于selenium+cv2+numpy实现登录某大型电商系统的更多相关文章
- 通过Dapr实现一个简单的基于.net的微服务电商系统
本来想在Dpar 1.0GA时发布这篇文章,由于其他事情耽搁了放到现在.时下微服务和云原生技术如何如荼,微软也不甘示弱的和阿里一起适时推出了Dapr(https://dapr.io/),园子里关于da ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr
目录:一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务电 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权
Oauth2授权,熟悉微信开发的同学对这个东西应该不陌生吧.当我们的应用系统需要集成第三方授权时一般都会做oauth集成,今天就来看看在Dapr的语境下我们如何仅通过配置无需修改应用程序的方式让第三方 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格
多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载
在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...
- 基于SpringBoot+MyBatis实现一套电商系统
项目介绍 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现. 前台商城系统包含首页门户.商品推荐.商品搜索.商品展示.购物车.订单流程.会员中心 ...
- CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号、小程序实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、等各种业务需求。
**可以快速二次开发的开源小程序商城系统源码**源码开源地址:https://github.crmeb.net/u/LXT 项目介绍: CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布
之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
首先感谢张队@geffzhang公众号转发了上一篇文章,希望广大.neter多多推广dapr,让云原生更快更好的在.net这片土地上落地生根. 目录:一.通过Dapr实现一个简单的基于.net的微服务 ...
随机推荐
- HBase编程 API入门系列之delete(客户端而言)(3)
心得,写在前面的话,也许,中间会要多次执行,连接超时,多试试就好了. 前面的基础,如下 HBase编程 API入门系列之put(客户端而言)(1) HBase编程 API入门系列之get(客户端而言) ...
- C#获取窗口大小和位置坐标 GetWindowRect用法
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetWi ...
- 相机标定:PNP基于单应面解决多点透视问题
利用二维视野内的图像,求出三维图像在场景中的位姿,这是一个三维透视投影的反向求解问题.常用方法是PNP方法,需要已知三维点集的原始模型. 本文做了大量修改,如有不适,请移步原文: ...
- Dijkstra的双栈算术表达式求值算法 C++实现
#include<iostream> #include<string> using namespace std; template<typename T> clas ...
- 浅谈 Unserscore.js 中 _.throttle 和 _.debounce 的差异
来源:http://blog.coding.net/blog/the-difference-between-throttle-and-debounce-in-underscorejs Unsersco ...
- Step by Step 开发dynamics CRM
这里是作为开发贴的总结. 现在plugin和workflow系列已经终结. 希望这些教程能给想入坑的小伙伴一些帮忙. CRM中文教材不多, 我会不断努力为大家提供更优质的教程. Plugin 开发系列 ...
- Node.js 常用Mongoose方法
Node.js 手册查询-Mongoose 方法 一.Schema 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的表结构 ...
- java操作Excel的poi的字体设置
package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.use ...
- Sql Server 查询性能查看
dbcc dropcleanbuffers --清除buffer pool里的数据页面 dbcc freeproccache --清除memtoleave和buffer pool里的执行计划内存 se ...
- 重置root管理员密码(RedHat、CentOS、Fedora)
重启Linux系统主机并出现引导画面时,按下键盘上的e键进入内核编辑界面. 在Linux16参数这行后面追加"rd.break"参数,然后按下Ctrl+x组合键来运行修改后的内核程 ...