资源简介

本资源既有我的代码,也有我的学习视频。基础差可以根据教程手把手教你实现12306登录用户、余票查询、下单等功能。本代码基于Python2.7 实现12306抢票,我的代码与视频有些不同,希望有助于你的学习。有问题请私信,共同学习,共同进步!

资源截图

代码片段和文件信息

# -*- coding:utf-8 -*-
# Author: zjtMeng
import urlliburllib2
import ssl
import cookielib #python中内置可以操控cookie的模块
import time
from user import UserIdUserPwddic_code
from json import loads
from station import stationDicstationList
import chardet

# python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError
import re
import sys
reload(sys)
sys.setdefaultencoding(‘utf8‘)


# 声明一个cookieJar对象来保存cookie
cookie = cookielib.CookieJar()
# 创建cookie处理器
hander = urllib2.HTTPCookieProcessor(cookie)
# 用该处理器初始化一个新的opener
opener = urllib2.build_opener(hander)
urllib2.install_opener(opener)
# 跳过验证证书步骤
ssl._create_default_https_context = ssl._create_unverified_context
headers = {
    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/55.0.2883.87 Safari/537.36‘
    ‘Referer‘: ‘https: // kyfw.12306.cn / otn / login / init‘
}

    # # 创建请求
    # res = opener.open(‘http://www.12306.cn‘)
    # for item in cookie:
    #     print ‘name:‘ + item.name + ‘-value:‘ + item.value
    # print res

def login():
    #  请求并获取验证码图片地址
    req = urllib2.Request(
        ‘https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.9644364014773337‘
    )
    # 添加头信息
    req.headers = headers
    imgCode = opener.open(req).read()
    with open(‘code.png‘‘wb‘) as fn:
        fn.write(imgCode)

    # ------------------- 验证码登录 -------------------------
    # 验证验证码
    # code = raw_input(“请输入验证码:“)     #写入二维码坐标

    code = raw_input(“请输入正确验证码对应位置的字母\n( a b c d\n  e f g h ):“)     #写入二维码坐标

    user_input = ‘‘
    for i in code:
        user_input += dic_code[i] + ‘‘
    user_input = user_input[0:-1]

    data ={
        ‘answer‘: user_input  #坐标二维码的结果
        ‘login_site‘:‘E‘
        ‘rand‘:‘sjrand‘
    }
    req = urllib2.Request(
        ‘https://kyfw.12306.cn/passport/captcha/captcha-check‘
    )
    req.headers = headers
    data = urllib.urlencode(data)
    html = opener.open(req data).read()
    # print ‘10001: ‘ + html


    # ------------------- 账号登录 -------------------------
    req = urllib2.Request(
        ‘https://kyfw.12306.cn/passport/web/login‘
    )
    req.headers = headers
    data = {
        ‘username‘: UserId
        ‘password‘: UserPwd
            ‘appid‘:‘otn‘
    }
    data = urllib.urlencode(data)
    html = opener.open(reqdata).read()
    # print ‘10002: ‘ + html

    req = urllib2.Request(‘https://kyfw.12306.cn/otn/login/userLogin‘)
    req.headers = headers
    data = {
        ‘_json_att‘:‘‘
    }
    data = urllib.urlencode(data)
    html = opener.open(reqdata)
    # print ‘10003: ‘ + html.geturl()

    req = urllib2.Request(‘https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin‘)
    req.headers = headers
    html = opener.open(reqdata)
    # print ‘10004: ‘ + html.geturl()

    req = urllib2.Request(‘https://kyfw.12306.cn/passport/web/a

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      16996  2019-02-24 16:41  12306抢票\12306爬虫软件\12306.py

     文件        122  2018-07-28 22:22  12306抢票\12306爬虫软件\ReadMe.txt

     文件        186  2019-02-24 16:56  12306抢票\12306爬虫软件\教程.txt

     目录          0  2019-02-24 16:56  12306抢票\12306爬虫软件

     目录          0  2019-02-24 16:56  12306抢票

----------- ---------  ---------- -----  ----

                17304                    5


评论

共有 条评论