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

第九课 Python模拟登陆与保持会话

2018-01-04 18:41 302 查看

一、了解与尝试

对于刚入门的同学来说,可能还不清楚,怎么弄,不过相信在前8节课的描述中,大家还是掌握一二,并有所创造了


好了废话不多说,下面看教程:

1.我们首先找到一个有会员登陆的网站,比如一个小网站,还有验证码“第一资源网



可能有的同学就慌了,这是一个js加载的登录框,爬虫怎么抓取呐???

不要急~

2.打开F12,开发者工具抓包看看登陆的请求链接是什么



抓取的请求链接如下:

登陆请求链接:http://www.dyboy.cn/content/templates/dy_dux//user/reg.php

验证码请求链接:http://www.dyboy.cn/include/lib/checkcode.php

3.第一次尝试coding



得到的结果\u转码后得到:

登录失败,请检查用户名密码&验证码是否正确


我们就注册一个账号后来测试

二、理清思路

a.先获得验证码
b.输入验证码即可登陆


三、实操

最终代码如下:

# name: 2018_login.py
# author: DYBOY
# charset: utf-8
# time: 2018-01-04

import requests
import json
from PIL import Image
from io import BytesIO

#注册全局req对象,请求session保持会话(与服务器不中断)
req = requests.Session()

header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}

login_url = "http://www.dyboy.cn/content/templates/dy_dux/user/reg.php"
code_url = "http://www.dyboy.cn/include/lib/checkcode.php"

#以上作为抓取的基本信息(变量)
#下面我们模拟登陆

code_image = req.get(code_url,headers = header,timeout=8)
image = Image.open(BytesIO(code_image.content))
image.show()#显示验证码

login_code = input("请输入验证码")

login_data = {"username":"********",
"password":"********",
"imgcode":login_code,
"action":"signin",
"remember":"forever"}

html_result = req.post(login_url,data=login_data,headers=header,timeout=8)
print(html_result.text)


运行的效果如下:



返回的结果转码后:



是不是很舒服啊?

作者:小东

博客地址:http://blog.csdn.net/dyboy2017

Github:https://github.com/dyboy2017

版权声明:原创文章,转赞请注明出处超链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: