Python 模拟登陆的两种实现方法


Posted in Python onAugust 10, 2017

Python 模拟登陆的两种实现方法

有时候我们的抓取项目时需要登陆到某个网站上,才能看见某些内容的,所以模拟登陆功能就必不可少了,散仙这次写的文章,主要有2个例子,一个是普通写法写的,另外一个是基于面向对象写的。

模拟登陆的重点,在于找到表单真实的提交地址,然后携带cookie,post数据即可,只要登陆成功,我们就可以访问其他任意网页,从而获取网页内容。

方式一:

import urllib.request 
import urllib.parse 
import http.cookiejar 
#post的内容 
values={ 
'logon.x':'linke', 
'password':'xxxx', 
'username':'xxxxx' 
} 
 
#登陆的地址 
logUrl="http://192.168.32.112:8080/templates/index/hrlogon.do" 
 
#构建cook 
cook=http.cookiejar.CookieJar() 
 
#构建openner 
openner=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cook)) 
 
#添加headers 
openner.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')] 
 
r=openner.open(logUrl,urllib.parse.urlencode(values).encode()) 
 
#print(r.read().decode('gbk')) 
 
r=openner.open("http://192.168.132.62:8080/kq/kqself/card/carddata.do?b_query=link") 
 
print(r.read().decode('gbk'))

方式二:

import urllib 
import urllib.request 
import urllib.parse 
import http.cookiejar 
import re 
 
 
class loginRLKQ: 
  post_data=b""; 
  def __init__(self): 
    #初始化类,cook的值 
    cj=http.cookiejar.CookieJar() 
    opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
    opener.addheaders=[('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')] 
    #初始化全局opener 
    urllib.request.install_opener(opener) 
 
  #login方法需要加入post数据 
  def login(self,loginurl,encode): 
    #模拟登陆 
    req=urllib.request.Request(loginurl,self.post_data) 
    rep=urllib.request.urlopen(req) 
    d=rep.read() 
    #print(d) 
    d=d.decode(encode) 
    return d 
  #登陆之后获取其他网页方法 
  def getUrlContent(self,url,encode): 
    req2=urllib.request.Request(url) 
    rep2=urllib.request.urlopen(req2) 
    d2=rep2.read() 
    d22=d2.decode(encode) 
    return d22 
if __name__=="__main__": 
    #实例化类 
    x=loginRLKQ() 
    #给post数据赋值 
    x.post_data=urllib.parse.urlencode({'username':"xxdd",'password':'xxdd','logon.x':'linke'}).encode(encoding="gbk") 
    #登陆 
    y=x.login("http://192.168.132.61:8080/templates/index/hrlogon.do","gbk") 
    #获取网页信息 
    print(x.getUrlContent("http://192.124.32.16:8080/kq/kqself/card/carddata.do?b_query=link","gbk"))

以上就是Python 模拟登陆的实现方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
python实现定时提取实时日志程序
Jun 22 Python
python把1变成01的步骤总结
Feb 27 Python
PyTorch实现AlexNet示例
Jan 14 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
Python多进程编程常用方法解析
Mar 26 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
Python破解极验滑动验证码详细步骤
May 21 Python
分享3个非常实用的 Python 模块
Mar 03 Python
Python 网页解析HTMLParse的实例详解
Aug 10 #Python
关于Python中浮点数精度处理的技巧总结
Aug 10 #Python
Python 处理数据的实例详解
Aug 10 #Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 #Python
关于Python中空格字符串处理的技巧总结
Aug 10 #Python
Python排序算法实例代码
Aug 10 #Python
简单谈谈python中的语句和语法
Aug 10 #Python
You might like
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
什么是python的必选参数
2020/06/21 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
高中的自我鉴定
2013/12/16 职场文书
摄影助理岗位职责
2014/02/07 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
数字化校园建设方案
2014/05/03 职场文书
销售团队激励口号
2014/06/06 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android