python 12306登录_Python 12306登陆详细分析及操作
前面的话: 1.第一次尝试爬虫,登陆12306,有不足的地方,望大家留言告知,谢谢。
2.前面引入了一个requests模块,我不多说,大家都知道干啥的。还有config是我的一个配置文件,因为其中涉及到账号密码。
3.每一部分都注释的比较清楚,大家应该都能看得懂,发完这篇文章后,会继续去研究,待下一次发一个完整版的抢票代码。
import requests
import config
# request 的 cookie 保存
person = requests.Session()
# 1. 访问登录界面
login_init_response = person.get(url='https://kyfw.12306.cn/otn/login/init')
# print(login_init_response.text)
# 2. 请求验证码
captcha_url = \
"https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.31745546375395106"
captcha_response = person.get(url=captcha_url)
captcha_content = captcha_response.content # 转换类型
fb = open('captcha.jpg', 'wb') # 把字节类型转换为图片文件
fb.write(captcha_content)
fb.close()
# 3. 检验验证码
captcha_check_url = \
'https://kyfw.12306.cn/passport/captcha/captcha-check'
captcha_check_data = {
'answer': input('请输入验证码坐标>>>:'),
'login_site': 'E',
'rand': 'sjrand'
}
check_response = person.post(url=captcha_check_url, data=captcha_check_data)
# print(check_response.text)
# 4. 检验用户名和密码
login_url = 'https://kyfw.12306.cn/passport/web/login'
login_data = {
'username': config.username,
'password': config.password,
'appid': 'otn'
}
login_response = person.post(url=login_url, data=login_data)
print(login_response.text)
if login_response.json()['result_code'] != 0:
exit("用户名或密码错误!")
# 5. 获取权限数据token(为下一步操作做准备)
token_url = 'https://kyfw.12306.cn/passport/web/auth/uamtk'
token_data = {
'appid': 'otn'
}
token_response = person.post(url=token_url, data=token_data)
print(token_response.text)
token_res = token_response.json()
# 6. 获取操作权限
auth_url = 'https://kyfw.12306.cn/otn/uamauthclient'
auth_data = {
'tk': token_res['newapptk']
}
auth_response = person.post(url=auth_url, data=auth_data)
print(auth_response.text)
运行结果:
python 12306登录_Python 12306登陆详细分析及操作相关推荐
- python 12306登录_Python 实现12306登录功能实例代码
下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示: #!/usr/bin/env python import requests import urllib.parse im ...
- python 12306登录_python爬虫--模拟12306登录
模拟12306登录 超级鹰: #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 class Ch ...
- python用户登录_python用户登录系统
本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如下 注意事项: 1.使用python3执行程序.按提示输入1或2,登录或退出程序 2.输入用户名后,如果用户名被锁定及无效用 ...
- python考勤记录_python连接中控考勤机分析数据
用python连接中控考勤机. 下载并分析数据,把结果邮件给人事. SDK包建议用32位的,在win7 64位系统上用64位开发包不行,用32可以. python还要pywin32 注意版本,我这用的 ...
- python多用户登录_python 多用户登录
原博文 2017-09-07 15:18 − Python多用户登录 需求 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用 ...
- python post 登录_Python爬虫之模拟post登陆及get登陆
一.模拟登陆需要账号,密码的网址 一些不需要登陆的网址操作已经试过了,这次来用Python尝试需要登陆的网址,来利用cookie模拟登陆 由于我们教务系统有验证码偏困难一点,故挑了个软柿子捏,赛氪,赛 ...
- python 数组升序_python简单数据清洗和分析
利用python学习了简单一维数组和二维数组,明白了集合.数组.字典大概的关联,并学会从中点用不同的数组类型进行更好的分析. 读取excel文件,开始进行最简单的数据清洗. 将购药时间重新命名为销售时 ...
- python中堆排序_python堆排序,详细过程图和讲解,这样做小白都会
### 正文前的扯淡 之前电话面试一个公司时,面试官让写一个堆排序,遗憾的是我忘了堆排序的思想了,所以直接说不会写,这次电面也以失败告终...知耻后勇,这几天在网上找了很多写堆排序的帖子,但是帖子质量 ...
- python星号正方形_Python星号*与**用法分析
本文实例分析了Python星号*与**用法.分享给大家供大家参考,具体如下: 1. 加了星号(*)的变量名会存放所有未命名的变量参数,不能存放dict,否则报错. 如: def multiple(ar ...
最新文章
- 基于HotNet2的扩散传播,竟是“图卷积”的特例
- ASP.NET Core 2.0 使用支付宝PC网站支付
- .NET 差点不叫“.NET”?微软大牛爆料技术往事
- 你或许不了解的C++函数调用(1)
- 如何直接打开android系统的wifi设置页面,防止intent劫持
- python fileinput处理多文件
- BOBSLEDDING(一道有趣的贪心题 nyoj309)
- 阿里的 《逆流而上》电子版
- 手把手教你用Python网络爬虫实现起点小说下载
- WIN7内部版本7600.此WINDOWS副本不是正版---解决方法
- Error splicing file: No space left on device
- JavaScript.07.淘宝购物车案例
- Noise2Noise摘要
- 计算机VB语言VERSION,怎么用VB获得电脑中excel的版本号
- 怎么把图片转换成PDF文件?
- Python毕业设计必备案例:【学生信息管理系统】
- 计算机高中学校在哪,瑞金职业高中计算机UI学校在哪里
- Linux基础 第一节 第三课
- 嵌入式操作系统与物联网演进之路
- C#、TypeScript 之父 Anders Hejlsberg:“会用 Excel 的,都是程序员 ”
热门文章
- node.js express配置响应头解决跨域问题
- win10内存占用率过高怎么办_如果你的CPU占用率过高 或跟Win10累积更新有关
- 乖离率背离公式_股票bias指标使用技巧-股票bias指标的使用五大技巧 股票bias指标计算公式...
- CodeForces 514B - Watto and Mechanism
- 浙江理工大学英语平台Unipus自动答题
- 进程调度算法FCFS和RR
- 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度
- 元旦:由微软裁员引发的思考
- 防止登录成功后重复刷新页面跳回登录页面
- 计网/数据库面试题(更新中ing~~)