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守护进程(daemon)代码实例
Mar 06 Python
Python批量按比例缩小图片脚本分享
May 21 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
python筛选出两个文件中重复行的方法
May 31 Python
基于python实现简单日历
Jul 28 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
浅谈python3中input输入的使用
Aug 02 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
Python 使用office365邮箱的示例
Oct 29 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 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
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
特步官方商城:Xtep
2017/03/21 全球购物
学院书画协会部门职责
2013/11/28 职场文书
幼儿教师培训感言
2014/03/08 职场文书
委托协议书范本
2014/04/22 职场文书
学期评语大全
2014/04/30 职场文书
个人安全承诺书
2014/05/22 职场文书
平面设计师岗位职责
2014/09/18 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers