from selenium import webdriver

from time import sleep

from PIL import Image

from selenium.webdriver import ActionChains

from Cjy import Chaojiying_Client

bro = webdriver.Chrome(executable_path='chromedriver.exe')

bro.get('https://kyfw.12306.cn/otn/login/init')

sleep(5)

截屏

bro.save_screenshot('main.png')

验证码所对应的标签

code_img_tag = bro.find_element_by_xpath('//*[@id="loginForm"]/div/ul[2]/li[4]/div/div/div[3]/img')

获取标签的起始坐标

location = code_img_tag.location

获取起始坐标的长和宽

size = code_img_tag.size

裁剪的区域范围

ragle = (int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height']))

读取图片

i = Image.open('./main.png')

根据指定的大小进行裁剪

frame = i.crop(range)

将裁剪的图片进行保存

frame.save('code.png')

使用超级鹰进行识别

def get_text(imgPath,imgType):

chaojiying = Chaojiying_Client('123456','123456.','901485')

im = open('imgPath','rb').read()

return chaojiying.PostPic(im,imgType)['pic_str']

获取超级鹰返回的数据

result = get_text('./code.png',9004)

对超级鹰的数据进行处理

all_list = []

if '|' in result:

list_1 = result.split('|')

count_1 = len(list_1)

for i in range(count_1):

xy_list = []

x = int(list_1[i].split(',')[0])

y = int(list_1[i].split(',')[1])

xy_list.append(x)

xy_list.append(y)

all_list.append(xy_list)

else:

x = int(result.split(',')[0])

y = int(result.split(',')[1])

xy_list = []

xy_list.append(x)

xy_list.append(y)

all_list.append(xy_list)

在图片中找到相应的点,进行点击

for a in all_list:

x = a[0]

y = a[1]

#在这里找的坐标不是整张页面,而是验证码的图片

ActionChains(bro).move_to_element_with_offset(code_img_tag,x,y).click().perform()

sleep(1)

找到用户名对应的标签进行输入

bro.find_element_by_id('username').send_keys('123456')

sleep(1)

找到密码对应的标签进行输入

bro.find_element_by_id('password').send_keys('123456')

sleep(1)

找的登陆按钮,点击

bro.find_element_by_id('loginSub').click()

sleep(5)

bro.quit()

用python爬虫,对12306网站进行模拟登陆的更多相关文章

  1. python爬虫之12306网站--火车票信息查询

    python爬虫之12306网站--火车票信息查询 思路: 1.火车票信息查询是基于车站信息查询,先完成车站信息查询,然后根据车站信息查询生成的url地址去查询当前已知出发站和目的站的所有车次车票信息 ...

  2. python爬虫之12306网站--车站信息查询

    python爬虫查询车站信息 目录: 1.找到要查询的url 2.对信息进行分析 3.对信息进行处理 python爬虫查询全拼相同的车站 目录: 1.找到要查询的url 2.对信息进行分析 3.对信息 ...

  3. 【python爬虫】用requests库模拟登陆人人网

    说明:以前是selenium登陆取cookie的方法比较复杂,改用这个 """ 用requests库模拟登陆人人网 """ import r ...

  4. Python爬虫 —— 知乎之selenium模拟登陆获取cookies+requests.Session()访问+session序列化

    代码如下: # coding:utf-8 from selenium import webdriver import requests import sys import time from lxml ...

  5. python爬虫之小说网站--下载小说(正则表达式)

    python爬虫之小说网站--下载小说(正则表达式) 思路: 1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/244 ...

  6. python爬虫之天气预报网站--查看最近(15天)的天气信息(正则表达式)

    python爬虫之天气预报网站--查看最近(15天)的天气信息(正则表达式) 思路: 1.首先找到一个自己想要查看天气预报的网站,选择自己想查看的地方,查看天气(例:http://www.tianqi ...

  7. 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

    转自:http://www.crifan.com/files/doc/docbook/web_scrape_emulate_login/release/html/web_scrape_emulate_ ...

  8. python+splinter实现12306网站刷票并自动购票流程

    python+splinter实现12306网站刷票并自动购票流程 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站 ...

  9. [转载]python实现带验证码网站的自动登陆

        原文地址:python实现带验证码网站的自动登陆作者:TERRY-V 早听说用python做网络爬虫非常方便,正好这几天单位也有这样的需求,需要登陆XX网站下载部分文档,于是自己亲身试验了一番 ...

随机推荐

  1. systemd --user进程CPU占用高问题分析

    1.问题由来 近期发现堡垒机环境有如下问题,systemd占用大量cpu: 原文链接:https://www.cnblogs.com/yaohong/p/16046670.html 2.问题定位 2. ...

  2. unittest 测试用例实现

    unittest框架结构 test_case: 测试套件,每一个.py文件代表一个测试用例,测试用例以test开头,否则框架读取不到测试用例 __init__.py是做什么的? 要弄明白这个问题,首先 ...

  3. KestrelServer详解[3]: 自定义一个迷你版的KestrelServer

    和所有的服务器一样,KestrelServer最终需要解决的是网络传输的问题.在<网络连接的创建>,我们介绍了KestrelServer如何利用连接接听器的建立网络连接,并再次基础上演示了 ...

  4. java反射和动态代理实现与原理详细分析

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式    代理模式是常用的java设计模式, ...

  5. 什么时候使用session?什么时候使用application?

    application:程序全局变量对象,对每个用户每个页面都有效session:用户全局变量,对于该用户的所有操作过程都有效

  6. 为什么 wait 和 notify 方法要在同步块中调用?

    Java API 强制要求这样做,如果你不这么做,你的代码会抛出 IllegalMonitorStateException 异常.还有一个原因是为了避免 wait 和 notify 之间产生竞态条件.

  7. 比较一下 Java 和 JavaSciprt?

    JavaScript 与 Java 是两个公司开发的不同的两个产品.Java 是原 Sun Microsystems 公司推出的面向对象的程序设计语言,特别适合于互联网应用程序 开发:而 JavaSc ...

  8. 爬虫-ip代理

    代理(proxy) 代理服务器:实现请求转发,从而可以实现更换请求的ip地址 代理的匿名度: 透明:服务器知道你使用了代理并且知道你的真实ip 匿名:服务器知道你使用了代理,但是不知道你的真实ip 高 ...

  9. 实验配置cisco单臂路由

    第一步 搭建实验拓扑图 第二步 对路由器做基本配置 为路由器创建名称: 设置进入特权模式 口令:控制台登录密码:vty登录密码 禁用DNS查找: 加密明文密码: 创建一个向访问设备者发出警告的标语&q ...

  10. vue2与vue3的区别

    template <template> <div class="wrap"> <div>{{ num }}</div> <Bu ...