前面的话: 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登陆详细分析及操作相关推荐

  1. python 12306登录_Python 实现12306登录功能实例代码

    下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示: #!/usr/bin/env python import requests import urllib.parse im ...

  2. python 12306登录_python爬虫--模拟12306登录

    模拟12306登录 超级鹰: #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 class Ch ...

  3. python用户登录_python用户登录系统

    本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如下 注意事项: 1.使用python3执行程序.按提示输入1或2,登录或退出程序 2.输入用户名后,如果用户名被锁定及无效用 ...

  4. python考勤记录_python连接中控考勤机分析数据

    用python连接中控考勤机. 下载并分析数据,把结果邮件给人事. SDK包建议用32位的,在win7 64位系统上用64位开发包不行,用32可以. python还要pywin32 注意版本,我这用的 ...

  5. python多用户登录_python 多用户登录

    原博文 2017-09-07 15:18 − Python多用户登录 需求 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用 ...

  6. python post 登录_Python爬虫之模拟post登陆及get登陆

    一.模拟登陆需要账号,密码的网址 一些不需要登陆的网址操作已经试过了,这次来用Python尝试需要登陆的网址,来利用cookie模拟登陆 由于我们教务系统有验证码偏困难一点,故挑了个软柿子捏,赛氪,赛 ...

  7. python 数组升序_python简单数据清洗和分析

    利用python学习了简单一维数组和二维数组,明白了集合.数组.字典大概的关联,并学会从中点用不同的数组类型进行更好的分析. 读取excel文件,开始进行最简单的数据清洗. 将购药时间重新命名为销售时 ...

  8. python中堆排序_python堆排序,详细过程图和讲解,这样做小白都会

    ### 正文前的扯淡 之前电话面试一个公司时,面试官让写一个堆排序,遗憾的是我忘了堆排序的思想了,所以直接说不会写,这次电面也以失败告终...知耻后勇,这几天在网上找了很多写堆排序的帖子,但是帖子质量 ...

  9. python星号正方形_Python星号*与**用法分析

    本文实例分析了Python星号*与**用法.分享给大家供大家参考,具体如下: 1. 加了星号(*)的变量名会存放所有未命名的变量参数,不能存放dict,否则报错. 如: def multiple(ar ...

最新文章

  1. 基于HotNet2的扩散传播,竟是“图卷积”的特例
  2. ASP.NET Core 2.0 使用支付宝PC网站支付
  3. .NET 差点不叫“.NET”?微软大牛爆料技术往事
  4. 你或许不了解的C++函数调用(1)
  5. 如何直接打开android系统的wifi设置页面,防止intent劫持
  6. python fileinput处理多文件
  7. BOBSLEDDING(一道有趣的贪心题 nyoj309)
  8. 阿里的 《逆流而上》电子版
  9. 手把手教你用Python网络爬虫实现起点小说下载
  10. WIN7内部版本7600.此WINDOWS副本不是正版---解决方法
  11. Error splicing file: No space left on device
  12. JavaScript.07.淘宝购物车案例
  13. Noise2Noise摘要
  14. 计算机VB语言VERSION,怎么用VB获得电脑中excel的版本号
  15. 怎么把图片转换成PDF文件?
  16. Python毕业设计必备案例:【学生信息管理系统】
  17. 计算机高中学校在哪,瑞金职业高中计算机UI学校在哪里
  18. Linux基础 第一节 第三课
  19. 嵌入式操作系统与物联网演进之路
  20. C#、TypeScript 之父 Anders Hejlsberg:“会用 Excel 的,都是程序员 ”

热门文章

  1. node.js express配置响应头解决跨域问题
  2. win10内存占用率过高怎么办_如果你的CPU占用率过高 或跟Win10累积更新有关
  3. 乖离率背离公式_股票bias指标使用技巧-股票bias指标的使用五大技巧 股票bias指标计算公式...
  4. CodeForces 514B - Watto and Mechanism
  5. 浙江理工大学英语平台Unipus自动答题
  6. 进程调度算法FCFS和RR
  7. 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度
  8. 元旦:由微软裁员引发的思考
  9. 防止登录成功后重复刷新页面跳回登录页面
  10. 计网/数据库面试题(更新中ing~~)