说明

12306 会有如下一个图形验证码识别点击,所以必须得先点击正确图片,才能继续进行操作。

基本步骤

  1. selenium打开对应网站,并进行截图
  2. 将图片截取出对应验证码所在图片
  3. 通过超级鹰识别出要点击的图片坐标
  4. 点击相应图片坐标
  5. 输入用户名和密码
  6. 点击登录,完成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的登录操作(图形验证码识别)相关推荐

  1. java_web:基于mvc设计模式实现用户登录操作

    基于mvc设计模式实现用户登录操作 知识点补充:mvc理论知识 应用实例:创建一个jsp页面login,将其表单数据发送到类LoginServlet中,在该类调用类LoginDao实现用户登录操作. ...

  2. [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)

    # I.多线程爬虫 # 1)概念:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率 # 线程:火车的车厢,进程:火车头 # # 2)threading模块:专门提供用来做多线程编程的 ...

  3. 网络爬虫笔记—图形验证码识别

    网络爬虫笔记-图形验证码识别 <兄弟们,本文章开启了关注后阅读.大家如不想关注,可直接微信搜索"宏蜘蛛"或文章标题,查看文章.> 1.什么是图形验证码 像知网注册界面的 ...

  4. 28. 实战:基于selenium实现12306自动购票

    目录 前言 目的 思路 代码实现 1. 进入登录界面,输入账号密码 2. 点击登录按钮,完成滑块验证 3. 在个人中心点击购票,跳转 4. 输入出发地.目的地,从控制台输入得到 5. 文本框输入出发日 ...

  5. Python+Selenium实现12306模拟登录

    最近在学python爬虫,学习到了selenium的使用,看网上有很多使用selenium模拟登录12306网站的文章,于是自己也尝试了一下.期间遇到了一些问题,也参考了很多大佬的文章最终得到了解决, ...

  6. rpa网站登录图形验证码识别

    先要把图片下载到本地,再调用接口识别 信息 = seFindChildElement(sSessionID, sDivElementID, 1, 'el-icon-date', sElementID) ...

  7. 基于正方系统的抢课软件教程系列一模拟登录3之验证码识别

    在上一篇可以进入系统后,我们发现我们还要输入验证码这是多么让人可恶的一件事呀!有时我们选课时就是在登录的这个门口进不行,那从何说起去选课页面呀!因此我们迫切要一种方法直接通过我们的帐号密码就可以选课! ...

  8. 爬虫入门经典(十七) | 图形验证码识别

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  9. python点触图形验证码识别_GitHub - AaronJny/captcha_detection: 点选式验证码识别方案...

    方案要点: 点选式验证码的一般解决流程 如何使用 xyolo 训练自己的目标检测模型 不借助 OCR 功能解决中文验证码的识别问题 爬虫,反爬虫,反反爬虫--一个无限循环. 验证码是反爬虫手段中的常用 ...

最新文章

  1. 断网,启用网络,关机的实现。
  2. jQuery 操作DOM总结,DOM Core操作,HTML-DOM操作和CSS-DOM操作
  3. socket什么情况下可读
  4. JSP 页面传值方法总结
  5. 防止用户将表单重复提交的方法
  6. linux ip brd不一致_3 个方便的命令行网速度测试工具 | Linux 中国
  7. Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
  8. Xshell连接不上行Linux系统
  9. python入门书?
  10. SQL Server 创建游标(cursor)
  11. 视频教程-R语言实战之行业案例分享视频课程-其他
  12. 计算机建立excel文件,用Excel建立数据库 -电脑资料
  13. iozone测试文件系统IO性能
  14. 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)
  15. CRC-16校验(多项式为x16+x15+x2+1):
  16. 好多大鱼的国风火车站,却有满满的科技感
  17. 【小程序】如何实现一个可折叠的列表
  18. 机器学习- MACHINE LEARNING
  19. Facebook与用户达成和解:为数据隐私问题赔偿5.5亿美元
  20. 使用Spring Boot 的CommandLineRunner遇到的坑

热门文章

  1. 详细分析TCP数据的传输过程
  2. 理解Windows内核模式与用户模式(新)
  3. 织梦php 中英文加手机,织梦dedecms系统中英文网站之中英文搜索结果
  4. java 桥接模式_《JAVA与模式》之桥接模式
  5. 领地柜怎么砸_在客厅和书房的隔墙上砸洞装个折叠窗,家里亮堂堂!这洞砸得值了...
  6. 【数据竞赛】NLP竞赛中99%上升的技巧!
  7. 【推荐系统】推荐系统里,你是怎么Embedding的?
  8. 抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret
  9. [论文浅析]ICLR2017 跨语言,跨任务,跨领域序列标注
  10. Ubuntu18.04深度学习环境配置(简易方式)