模拟登陆12306
.对12306进行模拟登陆.
需使用到超级鹰. 以对超级鹰板块截切。。。
http://www.chaojiying.com/user/mysoft/

import time
from PIL import Image
from base64 import b64decode
from selenium.webdriver import ActionChains
#对12306界面发请求
bro=webdriver.Chrome(executable_path=chromedriver路径')
bro.get('https://kyfw.12306.cn/')
bro.maximize_window()#网页最大化
time.sleep(3)
#点击到账号登陆
#find_elements_by_xpath无法点击
a=bro.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a')
a.click()
time.sleep(3)
#对整个界面截图
bro.save_screenshot('screen.png')
#用xpath找到验证码位置 定位图片位置,获取 src 的属性值
#get_attribute(‘src’) 会把换行符替换为"%0A",因此解码的时候要替换回去。
code_img_ele=bro.find_element_by_xpath('//*[@id="J-loginImg"]').get_attribute('src')
code_img_name= code_img_ele.split(",")[-1] # 删除前面的 “data:image/jpeg;base64,”
img_str = code_img_name.replace("%0A", '\n')  # 将"%0A"替换为换行符
img_data = b64decode(img_str)  # b64decode 解码
#保存图片
with open('./captcha.jpeg', 'wb') as fout:fout.write(img_data)fout.close()
```chaojiying = Chaojiying_Client('xxxx', 'xxxxx', '******')  #用户中心>>软件ID 生成一个替换 96001
im = open('./captcha.jpeg', 'rb').read()
#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
print (chaojiying.PostPic(im, 9004)['pic_str'])
result=chaojiying.PostPic(im, 9004)['pic_str']
time.sleep(0.5)
all_list=[]#存储坐标
#定位到验证码的区域
if '|' in result:list_1 = result.split('|')#将超级鹰返回的坐标用‘|’分割列表count_1=len(list_1)#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:xy_list = []x = int(result.split(',')[0])y = int(result.split(',')[1])xy_list.append(x)xy_list.append(y)all_list.append(xy_list)
for loc in all_list:x=loc[0]y=loc[1]#实例化动作链,并且定位到验证码图片里进行点击正确的图片code_img_eles = bro.find_element_by_xpath('//*[@id="J-loginImg"]')ActionChains(bro).move_to_element_with_offset(code_img_eles, x, y).click().perform()time.sleep(0.5)
#输入账号与密码
bro.find_element_by_id('J-userName').send_keys('*******')
time.sleep(1)
bro.find_element_by_id('J-password').send_keys('*******')
time.sleep(1)
bro.find_element_by_id('J-login').click()
time.sleep(1)
#出现滑块,并对滑块进行处理
span=bro.find_element_by_id('nc_1_n1z')
action=ActionChains(bro)
action.click_and_hold(span)
action.drag_and_drop_by_offset(span,400,0).perform()
while True:try:info=bro.find_element_by_xpath('//*[@id="J-slide-passcode"]/div/span').textprint(info)if info=='哎呀,出错了,点击刷新再来一次':#点击刷新bro.find_element_by_xpath('//*[@id="J-slide-passcode"]/div/span/a').click()time.sleep(0.2)#重新移动滑块span = bro.find_element_by_xpath('//*[@id="nc_1_n1z"]')action = ActionChains(bro)# 点击长按指定的标签action.click_and_hold(span).perform()action.drag_and_drop_by_offset(span, 400, 0).perform()time.sleep(5)except:print('ok!')break
action.release()
time.sleep(50)
bro.quit()本文仅做供学习交流,内容仅做参考

使用selenium进行模拟登录相关推荐

  1. 使用selenium+chrome模拟登录天眼查将数据保存至excel

    之前的博客中,为大家带来了使用selenium进行模拟登录,这次呢,为大家带来的是使用selenium进行模拟登录天眼查,然后抓取天眼查的前五页信息,由于不是会员,只能抓取前五页,你要是想要抓取更多, ...

  2. 解决selenium + chromedriver模拟登录被淘宝反爬

    解决selenium + chromedriver模拟登录被淘宝反爬 问题 ​使用 selenium + webdriver 模拟淘宝登录时,出现滑动验证码反爬,尝试程序模拟滑动滑块,以及在程序打开的 ...

  3. Scrapy + Selenium 实现模拟登录,获取页面动态加载数据

    本文是模拟登录某八同城招聘网站,然后获取一个招聘信息页面中的浏览人数. 直接上代码! 1. Scrapy 爬虫文件 import scrapyclass TestSpider(scrapy.Spide ...

  4. Selenium之模拟登录铁路12306

    最近接触了一些selenium模块的相关知识,觉得还挺有意思的,于是决定亲自尝试写一些爬虫程序来强化selenium模块(一定要多尝试.多动手.多总结).本文主要使用python爬虫来模拟登录铁路12 ...

  5. Python使用selenium模块模拟登录12306

    selenium模块概述 selenium模块是基于浏览器自动化的一个模块.换句话说使用selenium可以让浏览器根据自己写的代码自动运行. 相应的语法 ·编写基于浏览器自动化的操作代码 · 发起请 ...

  6. Python+selenium+firefox模拟登录微博并爬取数据(1

    1:环境python3.5,最新 firefox,selenium-3.14.0. 本来准备用无界面的,但是感觉效果不好看出来所以先用有界面的浏览器来做.分几次来慢慢写.这节先配置好环境. 2:安装: ...

  7. selenium自动化模拟登录微博

    #导包 import time from selenium import webdriver from selenium.webdriver.common.by import By #创建谷歌实例化对 ...

  8. selenium模拟登录豆瓣和qq空间

    selenium模拟登录豆瓣和qq空间 今天又重新学习了下selenium,模拟登录豆瓣,发现设置等待时间真的是很重要的一步,不然一直报错:selenium.common.exceptions.NoS ...

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

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

最新文章

  1. 本日吐槽!“人傻钱多”的P2P公司是否是程序员的合适选择(群聊天记录的娱乐)...
  2. python比excel优势-python数据分析相对于bi和excel的优势是什么?
  3. Mysql加锁过程详解(2)-关于mysql 幻读理解
  4. Java快速生成20亿数字_20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap...
  5. Python 的 51 个秘密曝光,Github 获 2 万星
  6. 构造函数和析构函数能否声明为虚函数?
  7. 【算法竞赛学习】资金流入流出预测-挑战Baseline_建模预测
  8. strtotime()加半个小时_椰子鸡这样做太好吃了,一滴水不用加,鲜香嫩滑,做法非常简单...
  9. hive 创建外部表产生java_(一)Hive表(管理表、外部表)的创建规则
  10. word排版案例报告_原来按下这个键,10秒EXCEL与Word格式就能互相转换,涨知识了...
  11. div居中以及div中的元素居中
  12. Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后
  13. 问号和点运算符是什么? 在C#6.0中意味着什么?
  14. 华为手机所有图标变黑_华为手机app图标变成黑色
  15. Excel 工作表密码破解
  16. HTML生成Word文档,可自定义Word文档页眉、页脚、分页。
  17. 世界观的内涵是认识论模型
  18. 进击的UI-----------------UITableView(表视图)
  19. android 限制后台进程,Android O Preview 相关-后台执行限制
  20. 三大思维导图软件比较

热门文章

  1. 缺氧游戏里能造出计算机吗,缺氧游戏氧气制造方法汇总 缺氧氧气如何制造
  2. 【机器学习】机器学习公共数据集整理
  3. 03 计算机视觉-opencv图像形态学处理
  4. 数值范围_想顺产的话,这个数值最好别超出此范围,否则顺产的分娩风险大!...
  5. 2600评测_佳能专微的雄心,RF 28-70/2 L USM评测
  6. leetcode刷的一些杂题
  7. 时势造英雄,快影成长启示录
  8. 简单梳理下git的使用感受,思考git中最重要的是什么
  9. 南京都昌公司乔迁之志
  10. 如今引流横行的时代,你还缺乏流量吗?