学习python-模拟登陆网页

使用python模拟登陆网页

说明
最近心血来潮对python爬虫相关技术来了兴趣,特此记录,仅供学习参考,刚接触python几天大神勿喷。我这里测试目标为自己本地搭建的web平台,体验下来感触是真的代码很简洁- -,由于本人经手的项目大多是php、.net居多,代码量相较之下python完胜。

首先引入依赖拓展

import os
import requests
from bs4 import BeautifulSoup

处理登录操作


def login(username,password,oncaptcha,sessiona,headers,need_cap):
    print("**tp3**: 获取验证码")
    print("-"*50)
    captcha_content = sessiona.get('http://localhost/captcha',headers=headers).content    #获取二维码图片流 
    data = {#这里是登录需要提交信息  可以通过浏览器调试工具查看具体操作自己谷歌百度下,我就不写了
        "username":username,
        "password":password,
        "code":oncaptcha(captcha_content,need_cap), # 获取验证码图片
    }
    print("**tp5**: 登录中...."+str(data))
    print("-"*50)
    resp = sessiona.post('http://localhost/admin/login/checklogin',data,headers=headers).content#获取页面信息
    return resp 

处理验证码 data:图片流(我这里是png图片)need_cap:False则为不需要验证码


def get_captcha(data,need_cap):
    if need_cap is False:#判断是否需要处理验证码
        return
    captcha_path='captcha.png'#验证码图片保存路径

    #将图片流写入文件
    with open(captcha_path,'wb') as fb:
        fb.write(data)

    #为了方便我这里就直接调用系统工具显示图片,验证码自动解析还没有了解透,等研究好了再发布 
    os.system(captcha_path)
    print("**tp4**: 请输入验证码")
    return input('captcha:')#输入验证码

主入口


if __name__ == "__main__":
    print("**tp1**: 开启程序")
    print("-"*50)
    sessiona = requests.Session()
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'} #定义http头文件信息
    login('250379975','123456',get_captcha,sessiona,headers,True) # 用户名密码换自己的就好了
    resp = sessiona.get('http://localhost/admin/index',headers=headers)  # 登录进去了
    html=BeautifulSoup(resp.content ,'html.parser')#我这里就简单的获取下管理后台中的用户余额
    print(html.find(id="balance").string)#通过id获取内容

附上完整代码

import os
import requests
from bs4 import BeautifulSoup

def login(username,password,oncaptcha,sessiona,headers,need_cap):
    print("**tp3**: 获取验证码")
    print("-"*50)
    captcha_content = sessiona.get('http://localhost/captcha',headers=headers).content    #获取二维码图片流 
    data = {#这里是登录需要提交信息  可以通过浏览器调试工具查看具体操作自己谷歌百度下,我就不写了
        "username":username,
        "password":password,
        "code":oncaptcha(captcha_content,need_cap), # 获取验证码图片
    }
    print("**tp5**: 登录中...."+str(data))
    print("-"*50)
    resp = sessiona.post('http://localhost/admin/login/checklogin',data,headers=headers).content#获取页面信息
    return resp 

def get_captcha(data,need_cap):
    if need_cap is False:#判断是否需要处理验证码
        return
    captcha_path='captcha.png'#验证码图片保存路径

    #将图片流写入文件
    with open(captcha_path,'wb') as fb:
        fb.write(data)

    #为了方便我这里就直接调用系统工具显示图片,验证码自动解析还没有了解透,等研究好了再发布 
    os.system(captcha_path)
    print("**tp4**: 请输入验证码")
    return input('captcha:')#输入验证码

if __name__ == "__main__":
    print("**tp1**: 开启程序")
    print("-"*50)
    sessiona = requests.Session()
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'} #定义http头文件信息
    login('250379975','123456',get_captcha,sessiona,headers,True) # 用户名密码换自己的就好了
    resp = sessiona.get('http://localhost/admin/index',headers=headers)  # 登录进去了
    html=BeautifulSoup(resp.content ,'html.parser')#我这里就简单的获取下管理后台中的用户余额
    print(html.find(id="balance").string)#通过id获取内容

效果图

  • 开始运行自动打开验证码图片
    开始运行自动打开验证码图片
  • 关闭图片浏览器后输入验证码
    关闭图片浏览器后输入验证码
  • 这样就可以获取到想要的信息啦
    这样就可以获取到想要的信息啦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值