python3.7+selenium模拟淘宝登录功能的实现


Posted in Python onMay 26, 2020

在使用selenium去获取淘宝商品信息时会遇到登录界面

python3.7+selenium模拟淘宝登录功能的实现

这个登录界面处理的难度在于滑动验证的实现,有的人使用微博登录,避免了滑动验证,那可不可以使用密码登录呢?答案是可以的

实现思路

首先导入需要的库

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time

1. 定位登录元素,点击跳转

python3.7+selenium模拟淘宝登录功能的实现

代码如下:

password_login = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='site-nav-sign']//a[@class='h']")))
 password_login.click()

这样就可以从首页跳转到登录页面

2. 获取用户和密码输入框,并输入信息

input_user = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='input-plain-wrap input-wrap-loginid ']//input[@class='fm-text']")))
 input_user.send_keys('用户')

 input_password = self.browser.find_element_by_xpath("//div[@class='input-plain-wrap input-wrap-password']//input[@class='fm-text']")
 input_password.send_keys('密码')

3. 获取滑块元素

slider = self.wait.until(
 EC.element_to_be_clickable(
 (By.XPATH, '//div[@class="scale_text slidetounlock"]//span[@class="nc-lang-cnt"]')))

4. 滑块运动路径的实现

distance = 260
 track = []
 current = 0
 # mid = distance*3/13
 t = 1
 v= 260
 if current < distance:
 x = v*t
 current = current+x
 track.append(round(x))

这里的260是根据框的大小计算出来的

python3.7+selenium模拟淘宝登录功能的实现

从图中我们可以看出来,框的大小是300*40,所以滑动距离是260

5. 按照运动路径拖动滑块

ActionChains(self.browser).click_and_hold(slider).perform()
 for i in tracks:
 ActionChains(self.browser).move_by_offset(xoffset=i,yoffset=0).perform()
 time.sleep(1)
 ActionChains(self.browser).release().perform()

6. 最后一步:获取登录按钮,点击登录

button = self.wait.until(
 EC.element_to_be_clickable((By.XPATH,"//div[@class='fm-btn']//button[@type='submit']")))
 button.click()

代码整理

# encoding:utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time
class Taobao_login(object):
 def __init__(self):
 self.browser = webdriver.Chrome()
 self.browser.get('https://www.taobao.com')
 self.wait = WebDriverWait(self.browser,10)
 #登录操作
 def _put_info(self):
 #等待密码登录选项出现并跳转登录页面
 password_login = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='site-nav-sign']//a[@class='h']")))
 password_login.click()
 #登录
 input_user = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='input-plain-wrap input-wrap-loginid ']//input[@class='fm-text']")))
 input_user.send_keys('用户')
 input_password = self.browser.find_element_by_xpath("//div[@class='input-plain-wrap input-wrap-password']//input[@class='fm-text']")
 input_password.send_keys('密码')
 def _get_track(self):
 '''
 获取运动轨迹
 :return: 运动轨迹
 '''
 #滑动验证
 distance = 260
 track = []
 current = 0
 # mid = distance*3/13
 t = 1
 v= 260
 if current < distance:
 x = v*t
 current = current+x
 track.append(round(x))
 return track
 def _get_slider(self):
 '''
 获取滑块
 :return: 滑块对象
 '''
 slider = self.wait.until(
 EC.element_to_be_clickable(
 (By.XPATH, '//div[@class="scale_text slidetounlock"]//span[@class="nc-lang-cnt"]')))
 return slider
 def _move_to_gap(self,slider,tracks):
 '''
 按照tracks拖动滑块
 :param spider: 滑块
 :param tracks: 轨迹
 :return:
 '''
 ActionChains(self.browser).click_and_hold(slider).perform()
 for i in tracks:
 ActionChains(self.browser).move_by_offset(xoffset=i,yoffset=0).perform()
 time.sleep(1)
 ActionChains(self.browser).release().perform()
 def _login(self):
 #点击登录
 button = self.wait.until(
 EC.element_to_be_clickable((By.XPATH,"//div[@class='fm-btn']//button[@type='submit']")))
 button.click()
 time.sleep(1)
 def run(self):
 self._put_info()
 time.sleep(1)
 # tracks = self._get_track()
 # slider = self._get_slider()
 # self._move_to_gap(slider,tracks)
 # time.sleep(1)
 # self._login()
if __name__ == '__main__':
 login = Taobao_login()
 login.run()

总结

到此这篇关于python3.7+selenium模拟登录淘宝的文章就介绍到这了,更多相关Python selenium模拟淘宝登陆内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
在Python中调用ggplot的三种方法
Apr 08 Python
Python3中简单的文件操作及两个简单小实例分享
Jun 18 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
python 编写简单网页服务器的实例
Jun 01 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
python tornado修改log输出方式
Nov 18 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
python的json包位置及用法总结
Jun 21 Python
Python ConfigParser模块的使用示例
Oct 12 Python
TensorFlow固化模型的实现操作
May 26 #Python
Python 如何批量更新已安装的库
May 26 #Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 #Python
Python自定义聚合函数merge与transform区别详解
May 26 #Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 #Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 #Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 #Python
You might like
php获取twitter最新消息的方法
2015/04/14 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
php文件包含的几种方式总结
2019/09/19 PHP
巧用局部变量提升javascript性能
2014/02/24 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
python安装以及IDE的配置教程
2015/04/29 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python判断有效的数独算法示例
2019/02/23 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
物流合作计划书
2014/01/10 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
团结主题班会
2015/08/13 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android