使用selenium进行模拟登录
模拟登陆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进行模拟登录相关推荐
- 使用selenium+chrome模拟登录天眼查将数据保存至excel
之前的博客中,为大家带来了使用selenium进行模拟登录,这次呢,为大家带来的是使用selenium进行模拟登录天眼查,然后抓取天眼查的前五页信息,由于不是会员,只能抓取前五页,你要是想要抓取更多, ...
- 解决selenium + chromedriver模拟登录被淘宝反爬
解决selenium + chromedriver模拟登录被淘宝反爬 问题 使用 selenium + webdriver 模拟淘宝登录时,出现滑动验证码反爬,尝试程序模拟滑动滑块,以及在程序打开的 ...
- Scrapy + Selenium 实现模拟登录,获取页面动态加载数据
本文是模拟登录某八同城招聘网站,然后获取一个招聘信息页面中的浏览人数. 直接上代码! 1. Scrapy 爬虫文件 import scrapyclass TestSpider(scrapy.Spide ...
- Selenium之模拟登录铁路12306
最近接触了一些selenium模块的相关知识,觉得还挺有意思的,于是决定亲自尝试写一些爬虫程序来强化selenium模块(一定要多尝试.多动手.多总结).本文主要使用python爬虫来模拟登录铁路12 ...
- Python使用selenium模块模拟登录12306
selenium模块概述 selenium模块是基于浏览器自动化的一个模块.换句话说使用selenium可以让浏览器根据自己写的代码自动运行. 相应的语法 ·编写基于浏览器自动化的操作代码 · 发起请 ...
- Python+selenium+firefox模拟登录微博并爬取数据(1
1:环境python3.5,最新 firefox,selenium-3.14.0. 本来准备用无界面的,但是感觉效果不好看出来所以先用有界面的浏览器来做.分几次来慢慢写.这节先配置好环境. 2:安装: ...
- selenium自动化模拟登录微博
#导包 import time from selenium import webdriver from selenium.webdriver.common.by import By #创建谷歌实例化对 ...
- selenium模拟登录豆瓣和qq空间
selenium模拟登录豆瓣和qq空间 今天又重新学习了下selenium,模拟登录豆瓣,发现设置等待时间真的是很重要的一步,不然一直报错:selenium.common.exceptions.NoS ...
- Python+Selenium实现12306模拟登录
最近在学python爬虫,学习到了selenium的使用,看网上有很多使用selenium模拟登录12306网站的文章,于是自己也尝试了一下.期间遇到了一些问题,也参考了很多大佬的文章最终得到了解决, ...
最新文章
- 本日吐槽!“人傻钱多”的P2P公司是否是程序员的合适选择(群聊天记录的娱乐)...
- python比excel优势-python数据分析相对于bi和excel的优势是什么?
- Mysql加锁过程详解(2)-关于mysql 幻读理解
- Java快速生成20亿数字_20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap...
- Python 的 51 个秘密曝光,Github 获 2 万星
- 构造函数和析构函数能否声明为虚函数?
- 【算法竞赛学习】资金流入流出预测-挑战Baseline_建模预测
- strtotime()加半个小时_椰子鸡这样做太好吃了,一滴水不用加,鲜香嫩滑,做法非常简单...
- hive 创建外部表产生java_(一)Hive表(管理表、外部表)的创建规则
- word排版案例报告_原来按下这个键,10秒EXCEL与Word格式就能互相转换,涨知识了...
- div居中以及div中的元素居中
- Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后
- 问号和点运算符是什么? 在C#6.0中意味着什么?
- 华为手机所有图标变黑_华为手机app图标变成黑色
- Excel 工作表密码破解
- HTML生成Word文档,可自定义Word文档页眉、页脚、分页。
- 世界观的内涵是认识论模型
- 进击的UI-----------------UITableView(表视图)
- android 限制后台进程,Android O Preview 相关-后台执行限制
- 三大思维导图软件比较