基于selenium实现12306的登录操作(图形验证码识别)
说明
12306 会有如下一个图形验证码识别点击,所以必须得先点击正确图片,才能继续进行操作。
基本步骤
- selenium打开对应网站,并进行截图
- 将图片截取出对应验证码所在图片
- 通过超级鹰识别出要点击的图片坐标
- 点击相应图片坐标
- 输入用户名和密码
- 点击登录,完成12306的登录
演示操作
代码
# !/user/bin/env python
# -*- coding: utf-8 -*-from chaojiying import get_code
from selenium import webdriver
from time import sleep
from PIL import Image
from selenium.webdriver import ActionChainsif __name__ == '__main__':browser = webdriver.Chrome('./chromedriver.exe')browser.get('https://kyfw.12306.cn/otn/login/init')# 因为验证码图片是不固定的,所以需要对页面进行截取sleep(3)# 浏览器截图browser.save_screenshot('./page.png')# 确认验证码图片的位置code_img_ele = browser.find_element_by_xpath('/html/body/div[6]/div/form/div/ul[2]/li[4]/div/div/div[3]/img')print(code_img_ele)# 获得验证码图片的位置location = code_img_ele.locationprint(location)# 获得验证码图片的长和宽size = code_img_ele.sizepos_tuple = (int(location['x']),int(location['y']),int(location['x'] + size['width']),int(location['y'] + size['height']),)# 图片裁剪i = Image.open('./page.png')frame = i.crop(pos_tuple)frame.save('./code.png')# 使用超级鹰进行验证码识别res = get_code('./code.png', '9004')['pic_str']print('图片地址', res)# 地址切割point_list = res.split('|')new_list = []for point in point_list:xy = point.split(',')temp = [int(xy[0]), int(xy[1])]new_list.append(temp)print(new_list)for point in new_list:x = point[0]y = point[1]ActionChains(browser).move_to_element_with_offset(code_img_ele, x, y).click().perform()sleep(0.1)account = {'username': '您自己的用户名(自行修改)','password': '您自己的密码(自行修改)'}username_input = browser.find_element_by_id('username')password_input = browser.find_element_by_id('password')username_input.send_keys(account['username'])password_input.send_keys(account['password'])submit_btn = browser.find_element_by_id('loginSub')submit_btn.click()sleep(60)browser.quit()
基于selenium实现12306的登录操作(图形验证码识别)相关推荐
- java_web:基于mvc设计模式实现用户登录操作
基于mvc设计模式实现用户登录操作 知识点补充:mvc理论知识 应用实例:创建一个jsp页面login,将其表单数据发送到类LoginServlet中,在该类调用类LoginDao实现用户登录操作. ...
- [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)
# I.多线程爬虫 # 1)概念:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率 # 线程:火车的车厢,进程:火车头 # # 2)threading模块:专门提供用来做多线程编程的 ...
- 网络爬虫笔记—图形验证码识别
网络爬虫笔记-图形验证码识别 <兄弟们,本文章开启了关注后阅读.大家如不想关注,可直接微信搜索"宏蜘蛛"或文章标题,查看文章.> 1.什么是图形验证码 像知网注册界面的 ...
- 28. 实战:基于selenium实现12306自动购票
目录 前言 目的 思路 代码实现 1. 进入登录界面,输入账号密码 2. 点击登录按钮,完成滑块验证 3. 在个人中心点击购票,跳转 4. 输入出发地.目的地,从控制台输入得到 5. 文本框输入出发日 ...
- Python+Selenium实现12306模拟登录
最近在学python爬虫,学习到了selenium的使用,看网上有很多使用selenium模拟登录12306网站的文章,于是自己也尝试了一下.期间遇到了一些问题,也参考了很多大佬的文章最终得到了解决, ...
- rpa网站登录图形验证码识别
先要把图片下载到本地,再调用接口识别 信息 = seFindChildElement(sSessionID, sDivElementID, 1, 'el-icon-date', sElementID) ...
- 基于正方系统的抢课软件教程系列一模拟登录3之验证码识别
在上一篇可以进入系统后,我们发现我们还要输入验证码这是多么让人可恶的一件事呀!有时我们选课时就是在登录的这个门口进不行,那从何说起去选课页面呀!因此我们迫切要一种方法直接通过我们的帐号密码就可以选课! ...
- 爬虫入门经典(十七) | 图形验证码识别
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- python点触图形验证码识别_GitHub - AaronJny/captcha_detection: 点选式验证码识别方案...
方案要点: 点选式验证码的一般解决流程 如何使用 xyolo 训练自己的目标检测模型 不借助 OCR 功能解决中文验证码的识别问题 爬虫,反爬虫,反反爬虫--一个无限循环. 验证码是反爬虫手段中的常用 ...
最新文章
- 断网,启用网络,关机的实现。
- jQuery 操作DOM总结,DOM Core操作,HTML-DOM操作和CSS-DOM操作
- socket什么情况下可读
- JSP 页面传值方法总结
- 防止用户将表单重复提交的方法
- linux ip brd不一致_3 个方便的命令行网速度测试工具 | Linux 中国
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- Xshell连接不上行Linux系统
- python入门书?
- SQL Server 创建游标(cursor)
- 视频教程-R语言实战之行业案例分享视频课程-其他
- 计算机建立excel文件,用Excel建立数据库 -电脑资料
- iozone测试文件系统IO性能
- 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)
- CRC-16校验(多项式为x16+x15+x2+1):
- 好多大鱼的国风火车站,却有满满的科技感
- 【小程序】如何实现一个可折叠的列表
- 机器学习- MACHINE LEARNING
- Facebook与用户达成和解:为数据隐私问题赔偿5.5亿美元
- 使用Spring Boot 的CommandLineRunner遇到的坑
热门文章
- 详细分析TCP数据的传输过程
- 理解Windows内核模式与用户模式(新)
- 织梦php 中英文加手机,织梦dedecms系统中英文网站之中英文搜索结果
- java 桥接模式_《JAVA与模式》之桥接模式
- 领地柜怎么砸_在客厅和书房的隔墙上砸洞装个折叠窗,家里亮堂堂!这洞砸得值了...
- 【数据竞赛】NLP竞赛中99%上升的技巧!
- 【推荐系统】推荐系统里,你是怎么Embedding的?
- 抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret
- [论文浅析]ICLR2017 跨语言,跨任务,跨领域序列标注
- Ubuntu18.04深度学习环境配置(简易方式)