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

一、了解与尝试

对于刚入门的同学来说,可能还不清楚,怎么弄,不过相信在前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
版权声明:原创文章,转赞请注明出处超链接

发布了51 篇原创文章 · 获赞 56 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/dyboy2017/article/details/78974144