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的微服务 ...
随机推荐
- Jenkins自动化部署.net程序
一.安装Jenkins 百度上一大堆就不做说明了. 二.构建.net前的准备 1.安装MSBUILD.EXE插件 1.1.进去jenkins->系统管理->插件管理 1.2.配置MSBUI ...
- 5.12redis
Window配置Redis环境和简单使用 一.关于Redis Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序 ...
- OC对象的本质及分类
Object-C的底层都是通过C/C++来实现的,所以OC中的对象也会转化成C/C++中的某一个数据结构, 我们在终端里通过指令 xcrun -sdk iphoneos clang -arch arm ...
- C#的WebBrowser操作frame
刚学c#不久,也不太懂什么IHTMLDocument.IHTMLDocument2.IWebBrowser2等等.自己琢磨了好久,终于知道了怎么用WebBrowser操作frame和iframe. 1 ...
- 时序分析:DTW算法(基于模板)
对时序对象进行分析,使用KMP算法可以分析速率不变的模式,参考时序分析:欧式空间轨迹模式识别.使用基于模板匹配的方法,对于速率发生变化的模式,需要用新的对速率要求松散的方法,DTW方法为一种广泛使用的 ...
- 【第一课】kaggle初识
Evernote Export Crowdflower搜索结果相关性 文件和数据描述 train.csv训练数据集包括: id:产品ID查询:使用的搜索词 product_description:完整 ...
- markdown让文字居中和带颜色
markdown让文字居中和带颜色 markdown让文字居中和带颜色1.说明2. 文字的居中3.文字的字体及颜色3.1 字体更换3.2 大小更换3.3 颜色替换4 总结 1.说明 本文主要叙述如何写 ...
- Wireshark 如何捕获网络流量数据包
转自:http://www.4hou.com/web/7465.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutia ...
- 在oracle中将某个字段的数据作为列名的查询
原表结构 查询语句: select sno,sname,sum(语文) 语文,sum(数学) 数学,sum(英语) 英语 from (select sno,sname,decode(subjiect, ...
- 51nod1046 A^B Mod C【快速幂】
给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^9) ...