您的位置:首页 > 编程语言 > Python开发

python-54: 验证码登陆尝试

2015-12-13 00:00 441 查看
好了,我们前面已经讲解了怎么找到登陆界面以及从登陆界面源码中获取验证码图片的网址,我们再来回顾一下前面设定的流程,并开始编写代码

先手动登陆,在登陆过程中找到post数据的内容,向哪个网站post数据

使用urlopen 将登陆界面的源码下载下来,并将验证码图片的网址找出来

点击验证码的图片找到要输入的验证码,构建请求,加入post数据,并将所有数据发送到实际登陆的网站

使用cookielib获取cookies,并构造opener自动携带cookies访问其他的页面

#!/usr/bin/env python
# -*- coding:UTF-8 -*-
__author__ = "217小月月坑"

'''
验证码登陆try-1
'''
import urllib
import urllib2
import re
import cookielib

# 获取登陆界面的源码并将验证码图片的网址抽取出来
login_url = 'http://id.ifeng.com/allsite/login'
headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0',}

pattern = re.compile(r'<img src="(.*?)".*?',re.S)
request = urllib2.Request(login_url,headers=headers)
contents = urllib2.urlopen(request).read()

items = re.findall(pattern,contents)
for item in items:
print item

# 提示用户输入验证码
captcha = raw_input("请输入验证码:")
# 构造post数据
data = {
'u':   'xxxxxxxxxxxxxxx@qq.com',
'k':   'xxxxxxxxxxxxxxxxx',
'auth':    captcha,
'auto':    'on',
'comfrom':'',
'type':    '2',
}
post_data = urllib.urlencode(data)

# 将post 信息发送到接受信息的网址
response = urllib2.urlopen("https://id.ifeng.com/api/sitelogin",post_data)
print response.read()

# cookies处理
cookieJar = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(cookieJar)
opener = urllib2.build_opener(handler)
response2 = opener.open("http://blog.ifeng.com/16441366.html")
print response2.read()

来看看结果



这又是为什么呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫