安装selenium cv2 pyautogui

直接win+R 输入cmd打开窗口直接输入下面语法即可安装成功,其他两个库同理

pip install selenium

通用部分:先加载对应的谷歌浏览器,用selenium把目标网页打开,然后点开登陆页面

进入页面可以定位到登陆地址发现是一个文本,可以通过find_elements()方法中的By.LINK_TEXT来定位含连接的文本元素,也可以通过CLASS_NAME来寻找元素,先进行成功登陆

注意:此处我的版本是selenium4,不同版本语法不同,本人在此处因为不同版本selenium的语法不同导致定位不到元素,一定要找到对应版本,去查官方文档才是最准确的

browser.find_element(By.LINK_TEXT, '亲,请登录').click()

方法一(selenium的click和send_key方法):

同理进入到登陆页面后通过find_elements的ID定位到账号和密码区域此处先click再send_key是为了模仿人输入,并且有一个间断,不然输入太快会显示不出来一个类似滑动验证的框

browser.find_element(By.ID, 'fm-login-id').click()
time.sleep(2)
browser.find_element(By.ID, 'fm-login-id').send_keys(id)
time.sleep(2)
browser.find_element(By.ID, 'fm-login-password').click()
time.sleep(2)
browser.find_element(By.ID, 'fm-login-password').send_keys(pwd)
time.sleep(2)

方法二(selenium执行js语句)

但如果想要点击右侧的二维码来进行二维码验证,就必须得用执行js语句才能点击,xpath和class都无法进行定位

def qrcode():browser.execute_script('document.getElementsByClassName("iconfont icon-qrcode")[0].click()')

方法二(cv2+pyautogui):

先要进行模板自动截取,调用webdriver的屏幕截取功能,然后用cv2的办法将两张图片进行定位,然后通过计算定位到目标图片的中心点,并通过pyautogui进行点击。此方法弊端就是需要自己截取目标图像并存放在同一个包下,这就削弱了自动化的实用性,但是这是针对selenium在xpath和执行js都无法成功的条件下使用的办法,但是在这笔者试过匹配二维码图片来进行定位,鼠标定位不到图片的中心点因此卡了很久,最终还是选择用的selenium的执行js语句的办法。通常是多种办法实现。

#保存图片
def save_pic(name):browser.maximize_window()browser.save_screenshot('./tb/' + name + '.png')
#进行模板的匹配def get_xy(pic_name):#获取模板和目标img_temp = cv2.imread('./tb/' + pic_name + '.png')img_target = cv2.imread('./tb/qrcode.png')#获取目标宽、高、通道数width, height, channel = img_target.shape#用matchTemplate进行模板匹配,用TM_SQDIFF_NORMED方差匹配result = cv2.matchTemplate(img_temp, img_target, cv2.TM_SQDIFF_NORMED)#成功匹配后获取匹配区域的左上目标upper_left = cv2.minMaxLoc(result)[2]#计算出右下角坐标lower_right = (upper_left[0] + width, upper_left[1] + height)# 计算坐标的平均值并将其返回avg = (int((upper_left[0] + lower_right[0]) / 2), int((upper_left[1] + lower_right[1]) / 2))return avg

全部代码

import cv2
import pyautogui
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from datetime import datetime
#对应浏览器加载
browser = webdriver.Chrome()
#防止pyautogui失控,调用为True
pyautogui.FAILSAFE = True
##方法3通过模板匹配进行点击
# def get_xy(pic_name):
#   #获取模板和目标
#   img_temp = cv2.imread('./tb/' + pic_name + '.png')
#   img_target = cv2.imread('./tb/qrcode.png')
#   #获取目标宽、高、通道数
#   width, height, channel = img_target.shape
#   #用matchTemplate进行模板匹配,用TM_SQDIFF_NORMED方差匹配
#   result = cv2.matchTemplate(img_temp, img_target, cv2.TM_SQDIFF_NORMED)
#   #成功匹配后获取匹配区域的左上目标
#   upper_left = cv2.minMaxLoc(result)[2]
#   #计算出右下角坐标
#   lower_right = (upper_left[0] + width, upper_left[1] + height)
#   # 计算坐标的平均值并将其返回
#   avg = (int((upper_left[0] + lower_right[0]) / 2), int((upper_left[1] + lower_right[1]) / 2))
#   return avg#进行模板截图并存储,方便匹配
def save_pic(name):browser.maximize_window()browser.save_screenshot('./tb/' + name + '.png')def get_url(url, pic_name):#进入目标网站,保存照片browser.get(url)time.sleep(4)browser.find_element(By.LINK_TEXT, '亲,请登录').click()save_pic(pic_name)time.sleep(4)##方法1.自动输入账号密码
# def login(id, pwd):
#   browser.find_element(By.ID, 'fm-login-id').click()
#   time.sleep(2)
#   browser.find_element(By.ID, 'fm-login-id').send_keys(id)
#   time.sleep(2)
#   browser.find_element(By.ID, 'fm-login-password').click()
#   time.sleep(2)
#   browser.find_element(By.ID, 'fm-login-password').send_keys(pwd)
#   time.sleep(2)##方法2.webdriver执行js语句用qrcode登陆
def qrcode():browser.execute_script('document.getElementsByClassName("iconfont icon-qrcode")[0].click()')if __name__ == "__main__":url = input('请输入目标网站地址:')pic_name = input('请输入模板照片名字:')# id_input = input("请输入账号:")# pwd_input = input("请输入密码:")get_url(url, pic_name)# avg = get_xy(pic_name)# pyautogui.click(avg[0], avg[1], button='left')time.sleep(4)qrcode()

更新:对滑动验证码的反爬

有些网站可能是需要滑动滑块来动态验证的反爬机制,通常是点击下方滑键才会出现需要将滑块对应在图片的空缺处。首先我们应该获取到完整的图片,可以获取到图片元素所在的位置和尺寸来获取图片的坐标,然后我们对整个屏幕来张截图,再对这张截图来根据图片的坐标来截取图片。

Selenium、cv2和pyautogui实现自动化登陆淘宝相关推荐

  1. Python《使用Selenium 和pyautogui 实现自动登录淘宝》

    有了上一博文学习即基础,这一节想来学习下自动登录淘宝. 直接整上测试代码: from selenium import webdriver # import logging import time fr ...

  2. selenium模拟登陆淘宝遇到的问题及解决

    今天忽然想用爬虫登陆淘宝,于是就试着写一下, 我是用selenium模拟登陆,我先是打开淘宝登陆页面发现淘宝的登陆界面是这样的 我就用代码写了一个模拟登陆:如下这是最终代码 import time f ...

  3. selenium使用账号密码模拟登陆淘宝,使用账号密码!

    1,需要相关的库如下 from selenium import webdriver from selenium.webdriver.common.action_chains import Action ...

  4. selenium模拟登陆淘宝,获取cookies

    新年工作第一天,再次祝大家新年快乐,猪年大吉! 1.前言,前期准备 这次分享一下模拟登陆淘宝实记.淘宝作为中国几大电商网站之一,反爬措施可以说是相当完善的,在这里我会分享出我是如何使用selenium ...

  5. selenium使用账号密码模拟登陆淘宝,使用账号密码

    1,需要相关的库如下 from selenium import webdriver from selenium.webdriver.common.action_chains import Action ...

  6. 利用Python模拟登陆淘宝,实现购物秒杀!

    模拟登录 学爬虫,总能听到模拟登录这四个字,究竟什么是模拟登录?通俗一点讲,模拟登录就是程序用账号和密码自动登录一个网站.然后,拿到只有登录后,才能下载的网站数据. 很多人学习python,不知道从何 ...

  7. Python自动登陆淘宝并爬取商品数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本开发环境 Python 3.6 Pycharm import time from sel ...

  8. 登陆淘宝账号,提示证书过期

    近日 ,遇到一客户,10年前的老本,方屏.登陆淘宝网,点"登陆"时,提示证书过期.有"关闭此耍页面""继续浏览"两个选项,点"继续 ...

  9. 爬虫-selenium(二)微博账号登录淘宝

    1. selenium 操控chrome浏览器 上一篇写的是操作火狐浏览器,今天切换成谷歌的chrome浏览器,对开发者更友好些,插件也多. 第一步是下载对应的驱动程序,上一篇中有链接,但谷歌不翻墙还 ...

最新文章

  1. java面向对象(包package)
  2. java 实现部门树_(java实现)哈夫曼(Huffman)树编码(自编压缩项目基础)
  3. kali锁屏后无法唤醒_面试官:说一下公平锁和非公平锁的区别?
  4. System variables, logging and the Execute SQL Task...(zz)
  5. [Java基础]Stream流综合练习
  6. 不同图像锐化算子提取的图像信息有哪些不同_传统图像处理
  7. lstm原始论文_RNN及其改版(LSTM, 双向RNN, seq2seq)总结
  8. 决策树CART算法讲解
  9. CCF-CSP认证备考学习行动路线图
  10. 一个超好用的笔记编辑器
  11. opencv 摄像头基本使用
  12. 客快物流大数据项目(一):物流项目介绍和内容大纲
  13. 蛋白质ph稳定性计算机模拟,基于计算机模拟、自组装和力谱技术的蛋白质分子间相互作用研究...
  14. 2022.04.15【单细胞】|Seurat安装,C++ compiler supports the long long type... no解决方法
  15. 不正经技术研究,键盘侠,你武器可能有个坑!!
  16. Visio调整图形的间距
  17. 华为鸿蒙P10plus,华为P10深度评测:徕卡双摄拍照逆天!
  18. (转)深入Vue2.x的虚拟DOM diff原理
  19. TCP协议及三次握手的过程
  20. Dubbo Cluster集群那点你不知道的事。

热门文章

  1. 北京市2009年住房建设计划
  2. html5 indexeddb,关于使用HTML5提供的indexedDB的一下心得
  3. C/C++黑魔法-三字母彩蛋
  4. Weisfeiler-Lehman(WL)算法
  5. R3 2200G搭配显卡推荐
  6. UIFont-动态字体
  7. python的OGR库获取geometry属性返回None,feature.geometry()
  8. USB2.0协议原文阅读笔记
  9. bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力
  10. 交换机vlan配置实训心得_交换机与路由器的实训心得