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学习---抽屉框架分析[ORM操作]180314
Django ORM操作 1. 字段操作 class User(model.Model); u=字段 用处: 1 . ...
- 13万字详细分析JDK中Stream的实现原理
前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的).Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性( ...
- Python爬虫爬取全书网小说,程序源码+程序详细分析
Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...
- python实现归并排序,归并排序的详细分析
python实现归并排序,归并排序的详细分析. 学习归并排序的过程是十分痛苦的.它并不常用,看起来时间复杂度好像是几种排序中最低的,比快排的时间复杂度还要低,但是它的执行速度不是最快的.很多朋友不 ...
- scrapy爬虫具体案例步骤详细分析
scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...
- scrapy爬虫具体案例详细分析
scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...
- HashMap 源码详细分析(JDK1.8)
一.概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值, ...
- 详细分析SQL语句逻辑执行过程和相关语法
本文目录: 1.SQL语句的逻辑处理顺序 1.2 各数据库系统的语句逻辑处理顺序 1.2.1 SQL Server和Oracle的逻辑执行顺序 1.2.2 MariaDB的逻辑执行顺序 1.2.3 M ...
- Python模拟登陆万能法-微博|知乎
Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...
随机推荐
- 原生js点击按钮切换图片
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- C#操作Control异步工具类
/// <summary> /// 异步工具类 /// </summary> public class TaskTools { /// <summary> /// ...
- Git Learning3 Eclipse Tools(未完成)
1.创建Git 操作:工程 右键 Team Share Project Git 完成创建 2.全局设置:Window->Preference->Git->Configuration- ...
- TreeMap/LinkedHashMap/HashMap按键排序和按值排序
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排 ...
- Unable to resolve dependency问题解决
Unable to resolve dependency 是一个让我头疼的问题 之前总是阴差阳错调试好 但是也没有总结出来方法 但是今天找到了 方法来源 https://jingyan.baidu.c ...
- getter unddfined
今天用vue.js写代码 报错: getter unddfined 错误原因:没有在main.js中注册store
- Promise的两种处理异步的方式
单个异步处理: let usedMemoryPromise = fetchUsedMemeory(); usedMemoryPromise.then(data => {...}) functio ...
- 数模美赛准备——我的第一个LaTex文档
软件下载地址:清华大学镜像网站(点击下载) https://mirrors.tuna.tsinghua.edu.cn/ctex/legacy/2.9/ 上述网站页面 根据个人需求下载不同的版本安装完成 ...
- 【Jquery+Express.js】 submit() 方法提交form
前端页面 .html 生成一个动态模块 Modal <div class="modal fade" id="addStaff" tabindex=&quo ...
- 杨力第一次jjave作业
感觉jave学起来比c语言难一点,格式要求较高,有更多的东西要记,但是只要认真学应该不是很难,自己应该多写程序.