使用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获取内容
效果图
- 开始运行自动打开验证码图片
- 关闭图片浏览器后输入验证码
- 这样就可以获取到想要的信息啦