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,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...
随机推荐
- day_其他操作符的重载
#include <iostream> #include <stdlib.h> using namespace std; class A{ public: A(void) { ...
- DAY 17常用模块
一.时间模块:time 1.时间戳:time.time() # 可以作为数据的唯一标识 print(time.time) # 1554878849.8452318 2.延迟线程的运行:time.sle ...
- 环境准备—之—linux下安装svn--开机自启--及format权限问题
借鉴自 http://www.cnblogs.com/liuxianan/p/linux_install_svn_server.html 这个很详细,但不是我的风格 https://blog.csdn ...
- springBoot 项目war包部署及改为war包后资源路径错误问题
参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...
- 规则引擎 drools
https://www.jianshu.com/p/725811f420db 深入了解Drools 简单介绍 笔者正在做风控系统,风控系统里边存在非常多的规则(比如:age < 16 || ag ...
- centos7安装python,mariaDB,django,nginx
0,安装centos7 centos默认不开启网卡,需要在安装时将ens33设置为on,或者后续通过vi ifcfg-ens33,找到onboot,设置为yes ssg登陆centos7时,如果提示W ...
- EF6中执行Sql语句
EF中提供了两个方法,一个是执行查询的Sql语句SqlQuery,另外一个是执行非查询的语句ExecuteSqlCommand.SqlQuery有两种形式的,一种是泛型的,一种是非泛型的.比如我们要在 ...
- RBMQ发布和订阅消息
RBMQ发布和订阅消息 exchange 参考翻译自: RabbitMQ官网 生产者并非将消息直接发送到queue,而是发送到exchange中,具体将消息发送到特定的队列还是多个队列,或者是丢弃,取 ...
- feign调用超时
Feign调用超时 feign调用超时 默认feign调用超时是1秒,断点调试是否调用成功肯定超时 feign.hystrix.enabled=true #feign调用默认是1000毫秒=1秒 ad ...
- 学号 2018-2019-20175212 实验一 《Java开发环境的熟悉》
学号 2018-2019-20175212 实验一 <Java开发环境的熟悉> 一.实验内容及步骤 1.使用JDK编译.运行简单的Java程序 mkdir 20175212exp1创建20 ...