文档章节

Python2 爬虫 登录 12306

 阿豪boy
发布于 2017/08/30 19:13
字数 378
阅读 21
收藏 0

 需要手动输入验证码

# coding=utf-8

import urllib
import urllib2
import urlparse
import re
import bs4
import requests
import cookielib

import sys
import ssl

reload(sys)
sys.setdefaultencoding('utf-8')

# 关闭证书验证
ssl._create_default_https_context = ssl._create_unverified_context

# 创建cookie
c = cookielib.LWPCookieJar()
# 绑定到urllib2的处理
cookie = urllib2.HTTPCookieProcessor(c)

# 附带cookie提交
openr = urllib2.build_opener(cookie)

url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.49959081844167086'
req = urllib2.Request(url)
req.add_header('User-Agent',
               'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.3397.16 Safari/537.36')
req.add_header('Referer', 'https://kyfw.12306.cn/otn/login/init')
codeImg = openr.open(req).read()
with open('codeimg.jpg', 'wb') as f:
    f.write(codeImg)

'''
    验证码验证记得以原始尺寸打开,竖直x,横y
'''

codeans = raw_input("请输入验证码:\n")

'''
必须先获取cookie,不然报错:
验证码校验失败,信息为空
'''

data = {
    'answer': codeans,
    'login_site': 'E',
    'rand': 'sjrand'
}

print type(data)
print data
# 将字典转为字符串
data = urllib.urlencode(data)
print type(data)
print data

'''
<type 'dict'>
{'answer': '238,36,128,43', 'rand': 'sjrand', 'login_site': 'E'}
<type 'str'>
answer=238%2C36%2C128%2C43&rand=sjrand&login_site=E
'''
url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
req = urllib2.Request(url)
req.add_header('User-Agent',
               'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.3397.16 Safari/537.36')
html = openr.open(req, data=data).read()
print html




'''
登陆
'''
uid = ''
pwd = ''
url = 'https://kyfw.12306.cn/passport/web/login'

req=urllib2.Request(url)
req.add_header('User-Agent',
               'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.3397.16 Safari/537.36')

req.add_header('Referer', 'https://kyfw.12306.cn/otn/login/init')

data = {
    'username': uid,
    'password': pwd,
    'appid': 'otn'
}

data = urllib.urlencode(data)
html  = openr.open(req,data=data).read()
print html

 

请输入验证码:
180,50,110,110
<type 'dict'>
{'answer': '180,50,110,110', 'rand': 'sjrand', 'login_site': 'E'}
<type 'str'>
answer=180%2C50%2C110%2C110&rand=sjrand&login_site=E
{"result_message":"验证码校验成功","result_code":"4"}
{"result_message":"登录成功","result_code":0,"uamtk":"5p5dsjV2NzYD0IsqCsVjCyxTkdAMVwRMsV-98XGGPhcPaNfpub5150"}

 

© 著作权归作者所有

共有 人打赏支持
粉丝 23
博文 1090
码字总数 735685
作品 0
西安
Python3.6实现12306火车票自动抢票,附源码

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理...

猫咪编程
06/05
0
0
PHP爬虫和基于命令行的Python爬虫有什么差别?

基于命令行的Python爬虫。。。就是说是命令行运行的,而不是通过浏览器运行的 然后这种Python爬虫和PHP爬虫什么差别呢? 是不是因为php爬虫本身基于浏览器,一旦你的浏览器已经登录了对方网站...

oreax
06/05
0
0
Python学到什么程度才可以去找工作?掌握这4点足够了!

大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问题,而对...

p柯西
06/27
0
0
高级爬虫(一):Scrapy爬虫框架的安装

Hi 小伙伴们差不多有半个月没有更新干货了,一直有点忙,而且这中间还有曲折过程,也就没有更新文章. 但今天无论如何也要更新一篇文章,接下来是爬虫高级篇重点讲解的地方! 最近会连载Scrap...

Python绿色通道
04/22
0
0
福利 | Python专场竞技,这些书给你加把力!

端午节将至,各地龙舟备战竞技,粽子部队也整装待发。小编掐指一算,这种热闹的时节,是时候展现真正的技(fu)术(li)了! (“Python号”龙舟闪亮登场!) Python作为当下最流行的编程语言...

06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
34分钟前
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
46分钟前
0
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
0
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部