python3爬虫session处理12306火车票动态图片验证码登录

一、 实现需求
1、 登录12306
用户名与密码是明码登录,无需处理
2、 动态图片验证码
是8张动态图片,图片很小
可能要选择图片中的1—3个不等图片
3、 查票与购票
要定位到登录url,及要提交的参数

二、 实现原理
1、 采用session技术
尽管cookie与session本质上是一回事,但不能混用,要么采用cookie,要么采用session
2、 采用PIL处理图片
response下载字节保存到本地图片文件,用PIL显示图片
3、 12306验证码图片
1) 是一张图片,要找出其中的1—3张图片
2) 这张图片中有8张小图片
分2排
上一排序号为0,1,2,3,
下一排序号为4,5,6,7
3) 这8张小图片相对中心坐标
[‘35,35’,’105,35’,’175,35’,’245,35’,’35,105’,’105,105’,’175,105’,’245,105’]
4) 假设要提交第2,4,6张图片,则提交数据为
175,35,35,105,175,105
分别对应第2,4,6图片坐标位置
4、 登录
同一个session验证通过后,即可以登录
三、 完整示例如下

# -*- coding: utf-8 -*-
"""
2018-06-22 15:49:34
作者:刘明
"""

import requests  
from PIL import Image  
from json import loads  

from requests.packages.urllib3.exceptions import InsecureRequestWarning  
# 禁用安全请求警告  
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)  

headers = {  
            "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"  
        }  
session = requests.session()  

def getCheckImgIndex():  
        url = "https://kyfw.12306.cn/passport/captcha/captcha
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值